将自定义标头设置为所有排球请求

覆盖getHeaders()可以根据请求添加海关标题。 但是如果总是需要设置X头呢? 例如静态身份validation令牌。

JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params), new Response.Listener() { @Override public void onResponse(JSONObject response) { setFollowButton(item); } }, null){ @Override public Map getHeaders() throws AuthFailureError { HashMap headers = new HashMap(); headers.put("Authorization", "Token XXXXXXXXXXXX"); return headers; } }; Application.getInstance().addToRequestQueue(req); 

可以是添加到发送到addToRequestQueue方法的请求的标头,而不是每次写入请求时覆盖它?

我相信最好的方法是扩展你选择使用的HttpStack子类,然后拦截performRequest()方法,将你的全局头文件放在其中。

 public class MyHurlStack extends HurlStack { @Override public HttpResponse performRequest( Request request, Map additionalHeaders) throws IOException, AuthFailureError { Map headers = request.getHeaders(); // put your global headers headers.put("Via", "netroid"); headers.put("Accept-Charset", "UTF-8"); headers.put("Origin", "http://netroid.cn/"); return super.performRequest(request, additionalHeaders); } } public class MyHttpClientStack extends HttpClientStack { public MyHttpClientStack(HttpClient client) { super(client); } @Override protected void onPrepareRequest(HttpUriRequest request) throws IOException { // put your global headers request.setHeader("Via", "netroid"); request.setHeader("Accept-Charset", "UTF-8"); request.setHeader("Origin", "http://netroid.cn/"); super.onPrepareRequest(request); } } 

RequestQueue初始化时,使用自定义HttpStack代替。

 if (stack == null) { if (Build.VERSION.SDK_INT >= 9) { stack = new HurlStack(); } else { stack = new MyHttpClientStack(AndroidHttpClient.newInstance(userAgent)); } } Network network = new BasicNetwork(stack); 

HurlStack版本的实际工作实现:

 public class MyHurlStack extends HurlStack { @Override public HttpResponse performRequest( Request request, Map additionalHeaders) throws IOException, AuthFailureError { additionalHeaders.put("Via", "netroid"); additionalHeaders.put("Accept-Charset", "UTF-8"); additionalHeaders.put("Origin", "http://netroid.cn/"); return super.performRequest(request, additionalHeaders); } }