How to send Authorization header in Android using Volley library?

Viewed 43316

How can I send Authorization header using Volley library in Android for GET method?

This is my request code:

JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, url,
            null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            Log.d("Response", response.toString());
            pd.dismiss();
            
            Toast.makeText(MainActivity.this, "" + response.toString(), Toast.LENGTH_SHORT).show();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d("Error", "Error: " + error.getMessage());
            Toast.makeText(MainActivity.this, "" + error.getMessage(), Toast.LENGTH_SHORT).show();
            pd.dismiss();

        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Authorization", "2e96e0a4ff05ba86dc8f778ac49a8dc0");
            return headers;
        }
    };
6 Answers

This can be simply achieved by using the getHeaders() thus;

@Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headerMap = new HashMap<String, String>();
                headerMap.put("Content-Type", "application/json");
                headerMap.put("Authorization", "Bearer " + ACCESS_TOKEN);
                return headerMap;
            }

If an API needs a Authorization Header then Using Volley we need to do this :

JsonObjectRequest jsonObejct = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

            Log.wtf("The Response ",response.toString());
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Authorization", "XXXX");
            return params;
        }
      };

try this code

 @Override
public Map<String, String> getHeaders() throws AuthFailureError {
    String credentials = preferenceHelper.getEmail() + ":" + preferenceHelper.getPassword();
    String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.DEFAULT);
    HashMap<String, String> headers = new HashMap<>();
    headers.put("Authorization", "Basic " + base64EncodedCredentials);
    return headers;
}
Related