Получение куки из ответа на залп - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю на Android с Volley, мне нужно сделать HTTP-запрос для получения некоторых файлов cookie, проблема в том, что файл cookie, который я хочу получить , находится не в заголовке Set-Cookie, а в разделе файлов cookie.enter image description here

Я попробовал все с Volley, но не смог получить доступ к этой части.Есть ли способ получить эти куки?большое спасибо

Ответы [ 3 ]

0 голосов
/ 09 апреля 2019

На самом деле, если метод запроса GET. Тогда может быть приведенный ниже пример будет работать

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

URL url = new URL("url");

URLConnection connection = url.openConnection();
connection.getContent();

List<HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
for (HttpCookie cookie : cookies) {
    System.out.println(cookie.getDomain());
    System.out.println(cookie);
}
0 голосов
/ 09 апреля 2019

Наконец-то нашел ответ, вот ответ:

CookieManager manager = new CookieManager();
           CookieHandler.setDefault(manager);

           OkHttpClient.Builder client = new OkHttpClient().newBuilder().cookieJar(new JavaNetCookieJar(manager));

            RequestBody reqbody = RequestBody.create(null, new byte[0]);
            Request request = new Request
                   .Builder()
                   .url(Utility.getRestaurationUrl(context).concat("/login/jwt/"))
                    .method("POST",reqbody)
                   .addHeader("Authorization",token)
                   .build();
            try {
                Response response = client.build().newCall(request).execute();
                List<HttpCookie> cook = manager.getCookieStore().getCookies();
            } catch (IOException e) {
                e.printStackTrace();
            }

Необходимо уточнить, что CookieManager из java.net.CookieManager;

0 голосов
/ 09 апреля 2019
public static void makeJsonObjectRequest(Context context, String url, final VolleyResponseListener listener) {
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
            (url, null, new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                listener.onResponse(response);
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                listener.onError(error.toString());
            }
        }) {

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        try {
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
           Map<String, String> responseHeaders = response.headers;
            String yourCookies = responseHeaders.get("Set-Cookie");
            Log.d("cookies",yourCookies);
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }
};

// Access the RequestQueue through singleton class.
VolleySingleton.getInstance(context).addToRequestQueue(jsonObjectRequest);
 }
...