how to get cookies from volley response

笑着哭i 提交于 2020-01-02 06:57:07

问题


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

回答1:


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

        };



回答2:


Please follow this link there are different types of method to return cookie

http://www.programering.com/a/MTO5EjMwATE.html

http://blog.codeint.com/saving-user-session-after-login-using-webservices-in-android-app/



来源:https://stackoverflow.com/questions/38591983/how-to-get-cookies-from-volley-response

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!