Android volley如何使用身份验证标头和Json对象发送请求

时间:2013-11-13 19:25:01

标签: android json android-volley

我需要通过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)

知道该怎么做?

3 个答案:

答案 0 :(得分:8)

在您的Request类中,覆盖getHeaders()以发送自定义标头

  

要在请求正文中发送参数,您需要覆盖其中一个   请求类的getParams()或getBody()方法

这里描述:

Asynchronous HTTP Requests in Android Using Volley

答案 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);

这对我有用!!