从排球响应中检索Cookie

时间:2019-04-09 08:54:39

标签: android android-volley session-cookies


我正在使用Volley在Android上工作,我需要执行HTTP请求以获取一些Cookie,这个问题是我要检索的Cookie不在标题Set-Cookie中,而是在Cookie部分中。 enter image description here

我尝试了Volley的所有功能,但无法访问该部分。
有没有办法获取这些cookie?
非常感谢你

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

实际上,如果请求方法是Form2。那么下面的示例可能会起作用

Private Sub Command56_Click()
    Label1.Caption = "Something else"
End Sub

答案 2 :(得分:0)

最终找到了答案,这是答案:

[√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [versão 10.0.17763.379], locale pt-BR)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.3)
[√] IntelliJ IDEA Community Edition (version 2019.1)
[√] VS Code (version 1.30.1)
[√] Connected device (1 available)

必须精确地确定CookieManager来自java.net.CookieManager;

答案 3 :(得分:0)

当您致电login api时,很可能您是在第一次尝试中获得cookie,而在下一次尝试中却没有。

这是因为cookie已经存在,但标题不再存在。

您可能想在第一次调用中保存cookie,然后根据您的生命周期要求在一段时间后刷新它。

您可以尝试与Postman一起查看。这是REST的好工具。这是link

另一个可能的原因可能是:

使用排球库时,Cookie返回null或不返回预期结果,因为调用此代码时:

response.headers.get("Set-Cookie");

响应头未正确映射。打电话

response.headers

返回一个Map对象,但是它不知道类型。那就是它的坏处。因此,更好的方法是像这样首先正确接收Map对象:

Map<String, String> map = response.headers;

然后:

String cookie = map.get("Set-Cookie");