如何在android webview中截取响应数据?
我知道我们可以通过httpclient发送的另一个httprequest获得它,但它可能在会话https方面存在一些问题。我可以在android webview中截取响应数据吗。我找不到这样的API。可能吗?似乎不可能。。。由于Android 4.0 webkit使用本机chromium http模块来执行所有http/https请求。它不提供任何钩子或回调供Java层拦截如何在android webview中截取响应数据?,android,webview,Android,Webview,我知道我们可以通过httpclient发送的另一个httprequest获得它,但它可能在会话https方面存在一些问题。我可以在android webview中截取响应数据吗。我找不到这样的API。可能吗?似乎不可能。。。由于Android 4.0 webkit使用本机chromium http模块来执行所有http/https请求。它不提供任何钩子或回调供Java层拦截 除非您想在webkit发出请求之前拦截请求,否则您可以参考WebViewClient.shouldOverrideUrlL
除非您想在webkit发出请求之前拦截请求,否则您可以参考
WebViewClient.shouldOverrideUrlLoading()
我不知道如何获取资源,但我知道,您可以从webview获取会话Cookie,并在自己的http请求或Android下载管理器中使用它
我有一个例子,它只从Cookie中获取php sessionID(这用于在最喜欢php的方面进行登录)
如果您不喜欢Httpclient,因为它已弃用,您可以在UrlConnection或其他Http客户端中使用此会话cookie,您只需添加cookie头
static final private String phpSessionName = "PHPSESSID";
/**
* Loads PHP Session ID from Cookie
*
* @date 22.09.2015
* @version 1.0
* @param url
* @return PHP SessionID or NULL if cookie contains no SessionID
*/
protected String getPHPSessionID(String url)
{
String id = null;
CookieManager cookieManager = CookieManager.getInstance();
String cookie = cookieManager.getCookie(url);
if(cookie != null)
{
String[] cookie_parts = cookie.split(";");
for(int t=0;t < cookie_parts.length;t++)
{
String[] cookieContent = cookie_parts[t].split("=");
if(phpSessionName.equals(cookieContent[0]))
{
id = cookieContent[1];
break;
}
}
}
else Log.w(TAG, "getPHPSessionID: no cookie found");
return id;
}
String phpSession = getPHPSessionID("http://yourdomain.com");
if(phpSession != null) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://yourdomain.com/stuff-to-load");
response = client.execute( request );
// Your code to load data or headers or response
request.addHeader("Cookie",phpSessionName+"="+phpSession);
}