如何从凌空反应中获取Cookie [英] how to get cookies from volley response

查看:84
本文介绍了如何从凌空反应中获取Cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从服务器响应中获取Cookie.对于网络呼叫,我正在使用排球库.

I need to get the cookies from server response. For network calling i am using volley library.

getRequest(String url, Response.Listener<JSONObject> responseListener, Response.ErrorListener errorListener) {
        try {

            JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, url, null, responseListener
                    , errorListener) {
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    return getAuthHeader(context);
                }
            };
            RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
            req.setRetryPolicy(policy);
            req.setShouldCache(false);
            addToRequestQueue(req);
        } catch (Exception e) {
            e.printStackTrace();
        }

public static Map<String, String> getAuthHeader(Context context) {
        Map<String, String> headerMap = new HashMap<>();

        headerMap.put("token", auth);     
        headerMap.put("Api-key", API_KEY);
        headerMap.put("Content-Type", CONTENT_TYPE);

        return headerMap;
    }

推荐答案

StringRequest req = new StringRequest(Request.Method.GET, url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                     Log.i("response",response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                     Log.i("error",error.getMessage());
                    }
                }){

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                return getAuthHeader(context);
            }

            @Override
            protected Response<String> parseNetworkResponse(NetworkResponse response) {
                // since we don't know which of the two underlying network vehicles
                // will Volley use, we have to handle and store session cookies manually
                Log.i("response",response.headers.toString());
                Map<String, String> responseHeaders = response.headers;
                String rawCookies = responseHeaders.get("Set-Cookie");
                Log.i("cookies",rawCookies);
                return super.parseNetworkResponse(response);
            }

        };

这篇关于如何从凌空反应中获取Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆