為你的請求新增自定義標頭,例如基本身份驗證

如果你需要為你的排球請求新增自定義標題,則在初始化後無法執行此操作,因為標題會儲存在私有變數中。

相反,你需要覆蓋 Request.classgetHeaders() 方法:

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;
    }
    ...
}