我需要通过volley发送一个带有authentification标头和Json对象的http请求。我没有在凌空中找到这个请求。
我找到了GsonRequest和JsonObjectRequest。 的 GsonRequest int方法,String url,Class clazz,Map headers ,Listener listener,ErrorListener errorListener,Gson useGson)
JsonObjectRequest (int方法,java.lang.String url,JSONObject jsonRequest ,Response.Listener侦听器,Response.ErrorListener errorListener)
知道该怎么做?
答案 0 :(得分:8)
在您的Request类中,覆盖getHeaders()
以发送自定义标头
要在请求正文中发送参数,您需要覆盖其中一个 请求类的getParams()或getBody()方法
这里描述:
答案 1 :(得分:1)
试试这段代码
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
String creds = String.format("%s:%s","USERNAME","PASSWORD");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
params.put("Authorization", auth);
return params;
}
答案 2 :(得分:1)
getHeaders()和getParams()方法可以同时用作标题和正文分别发送数据。
JsonObjectRequest jsonObjectRequest = new
JsonObjectRequest(Request.Method.GET,
url,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put(headerKey, headerValue);
return headers;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put(bodyKey, bodyValue);
return params;
}
};
VolleySingleton.getInstance(getActivity()).addToRequestQueue(jsonObjectRequest);
这对我有用!!