How can I send HTTP Basic Authentication headers in Android?

24,415

This is covered in the HttpClient documentation and in their sample code.

Share:
24,415
Sheehan Alam
Author by

Sheehan Alam

iOS, Android and Mac Developer. i can divide by zero.

Updated on November 17, 2020

Comments

  • Sheehan Alam
    Sheehan Alam over 3 years

    I am not sure how to send HTTP Auth headers.

    I have the following HttpClient to get requests, but not sure how I can send requests?

    public class RestClient extends AsyncTask<String, Void, JSONObject> {
            private String convertStreamToString(InputStream is) {
                /*
                 * To convert the InputStream to String we use the
                 * BufferedReader.readLine() method. We iterate until the
                 * BufferedReader return null which means there's no more data to
                 * read. Each line will appended to a StringBuilder and returned as
                 * String.
                 */
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
    
                String line = null;
                try {
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
                return sb.toString();
            }
    
            /*
             * This is a test function which will connects to a given rest service
             * and prints it's response to Android Log with labels "Praeda".
             */
            public JSONObject connect(String url) {
                HttpClient httpclient = new DefaultHttpClient();
    
                // Prepare a request object
                HttpGet httpget = new HttpGet(url);
    
                // Execute the request
                HttpResponse response;
                try {
                    response = httpclient.execute(httpget);
                    // Examine the response status
                    Log.i("Praeda", response.getStatusLine().toString());
    
                    // Get hold of the response entity
                    HttpEntity entity = response.getEntity();
    
                    if (entity != null) {
    
                        // A Simple JSON Response Read
                        InputStream instream = entity.getContent();
                        String result = convertStreamToString(instream);
    
                        // A Simple JSONObject Creation
                        JSONObject json = new JSONObject(result);
    
                        // Closing the input stream will trigger connection release
                        instream.close();
    
                        return json;
                    }
    
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
    
                return null;
            }
    
            @Override
            protected JSONObject doInBackground(String... urls) {
                return connect(urls[0]);
            }
    
            @Override
            protected void onPostExecute(JSONObject json) {
    
            }
        }
    
  • CommonsWare
    CommonsWare over 13 years
    FYI, your link is for HttpClient 3.x, and Android has HttpClient 4.x built in.
  • Brian Griffey
    Brian Griffey almost 13 years
    Some methods in the documentation don't exist on the android platform.