Luc*_*s78 8 cookies android webview
我目前有一个webview,它在onPageFinished中获得了cookie
mWebview = (WebView) this.findViewById(R.id.myWebView);
mWebview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
String cookies = CookieManager.getInstance().getCookie(url);
Log.d("Cookie", cookies);
}
});
mWebview.loadUrl("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)
CookieManager.getCookie()仅返回cookie的名称和值对.
现在我想获得关于该cookie的更多信息,例如路径和到期日期等...
我怎么知道如何提取cookie的所有"原始数据"?
小智 5
您需要覆盖 WebView 的资源加载才能访问响应标头(Cookie 作为 http 标头发送)。根据您支持的 Android 版本,您需要覆盖 WebViewClient 的以下两个方法:
mWebview.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (request != null && request.getUrl() != null && request.getMethod().equalsIgnoreCase("get")) {
String scheme = request.getUrl().getScheme().trim();
if (scheme.equalsIgnoreCase("http") || scheme.equalsIgnoreCase("https")) {
return executeRequest(request.getUrl().toString());
}
}
return null;
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (url != null) {
return executeRequest(url);
}
return null;
}
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以自己检索 url 的内容并将其提供给 WebView(通过创建新的 WebResourceResponse)或返回 null 并让 WebView 处理它(考虑到这会再次调用网络!)
private WebResourceResponse executeRequest(String url) {
try {
URLConnection connection = new URL(url).openConnection();
String cookie = connection.getHeaderField("Set-Cookie");
if(cookie != null) {
Log.d("Cookie", cookie);
}
return null;
//return new WebResourceResponse(connection.getContentType(), connection.getHeaderField("encoding"), connection.getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2495 次 |
| 最近记录: |