How to set custom header in Volley Request How to set custom header in Volley Request android android

How to set custom header in Volley Request


The accepted answer with getParams() is for setting POST body data, but the question in the title asked how to set HTTP headers like User-Agent. As CommonsWare said, you override getHeaders(). Here's some sample code which sets the User-Agent to 'Nintendo Gameboy' and Accept-Language to 'fr':

public void requestWithSomeHttpHeaders() {    RequestQueue queue = Volley.newRequestQueue(this);    String url = "http://www.somewebsite.com";    StringRequest getRequest = new StringRequest(Request.Method.GET, url,         new Response.Listener<String>()         {            @Override            public void onResponse(String response) {                // response                Log.d("Response", response);            }        },         new Response.ErrorListener()         {            @Override            public void onErrorResponse(VolleyError error) {                // TODO Auto-generated method stub                Log.d("ERROR","error => "+error.toString());            }        }    ) {             @Override        public Map<String, String> getHeaders() throws AuthFailureError {                 Map<String, String>  params = new HashMap<String, String>();                  params.put("User-Agent", "Nintendo Gameboy");                  params.put("Accept-Language", "fr");                return params;          }    };    queue.add(getRequest);}


It looks like you override public Map<String, String> getHeaders(), defined in Request, to return your desired HTTP headers.


If what you need is to post data instead of adding the info in the url.

public Request post(String url, String username, String password,       Listener listener, ErrorListener errorListener) {  JSONObject params = new JSONObject();  params.put("user", username);  params.put("pass", password);  Request req = new Request(     Method.POST,     url,     params.toString(),     listener,     errorListener  );  return req;}

If what you want to do is edit the headers in the request this is what you want to do:

// could be any class that implements MapMap<String, String> mHeaders = new ArrayMap<String, String>();mHeaders.put("user", USER);mHeaders.put("pass", PASSWORD);Request req = new Request(url, postBody, listener, errorListener) {  public Map<String, String> getHeaders() {    return mHeaders;  }}