我正在使用Volley在Android上工作,我需要执行HTTP请求以获取一些Cookie,这个问题是我要检索的Cookie不在标题Set-Cookie中,而是在Cookie部分中。
我尝试了Volley的所有功能,但无法访问该部分。
有没有办法获取这些cookie?
非常感谢你
答案 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");