android - 在 WebView 和 HTTP 请求之间共享 cookie
问题描述
我正在尝试在应用程序和WebView之间共享 cookie 。特别是,在 HTTP 请求之后,从响应中检索到的 cookie 需要注入到 Web 视图中。
我做了一个实验,以了解默认情况下是否共享 cookie,但似乎并非如此。实际上,先执行 HTTP 请求(C),然后检索 cookie (B),结果为空。相反,如果首先加载 url (A)并在之后检索 cookie (B),我会看到正确的结果。
// (A) Load web page
Button loadButton = findViewById(R.id.button);
loadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myWebView.loadUrl("https://www.google.it");
}
});
// (B) Retrieve cookies for a specific url
Button showCookieButton = findViewById(R.id.button2);
showCookieButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CookieManager cm = CookieManager.getInstance();
String cookies = cm.getCookie("https://www.google.it");
// print cookies here
}
});
// (C) Simulate a fake request through Volley
Button makeRequestButton = findViewById(R.id.button4);
makeRequestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
String url ="https://www.google.it";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
});
}
基于此,我可以说这CookieManager
只是相对于WebView
一般的 HTTP 请求而不是相对于 HTTP 请求。
因此,我的问题:
- Android 在哪里保存 HTTP 请求的 cookie?
- 如何检索从 HTTP 请求中保存的 cookie?这是特定于正在使用的网络库吗?例如改造、排球等。
- 有没有办法来回同步cookies?