为你的请求添加自定义标头,例如基本身份验证
如果你需要为你的排球请求添加自定义标题,则在初始化后无法执行此操作,因为标题会保存在私有变量中。
相反,你需要覆盖 Request.class
的 getHeaders()
方法:
new JsonObjectRequest(REQUEST_METHOD, REQUEST_URL, REQUEST_BODY, RESP_LISTENER, ERR_LISTENER) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> customHeaders = new Hashmap<>();
customHeaders.put("KEY_0", "VALUE_0");
...
customHeaders.put("KEY_N", "VALUE_N");
return customHeaders;
}
};
参数说明:
REQUEST_METHOD
-Request.Method.*
常数中的任何一个。REQUEST_URL
- 发送你的请求的完整 URL。REQUEST_BODY
- 包含要发送的 POST-Body 的JSONObject
(或 null)。RESP_LISTENER
- 一个Response.Listener<?>
对象,成功完成后调用onResponse(T data)
方法。ERR_LISTENER
- 一个Response.ErrorListener
对象,其onErrorResponse(VolleyError e)
方法在请求失败时被调用。
如果要构建自定义请求,也可以在其中添加标头:
public class MyCustomRequest extends Request {
...
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> customHeaders = new Hashmap<>();
customHeaders.put("KEY_0", "VALUE_0");
...
customHeaders.put("KEY_N", "VALUE_N");
return customHeaders;
}
...
}