首页 文章

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

提问于
浏览
4

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

  • 1

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

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

    这里描述:

    Asynchronous HTTP Requests in Android Using Volley

  • 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;
    }
    
  • 8

    getHeaders()和getParams()方法可以同时用作 Headers 和正文分别发送数据 .

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

    这对我有用!!

相关问题