如何拦截从Android WebView
发出的所有请求并获取相应的请求标头?我想看看我的WebView
发出的每个请求的标题,包括XHR,脚本来源,CSS等。
iOS上的等价物是覆盖NSURLCache
,它会为您提供所有这些信息。以下可能是最接近我想要的,但据我所知WebViewClient
只能给我们回字符串:
void onLoadResource(WebView view, String url);
WebResourceResponse shouldInterceptRequest(WebView view, String url);
答案 0 :(得分:6)
$('#user-menu li:nth-child(1)').click(function(e) {
$.post('Includes/ajax-user-summary.php', { user_id: 10667546, user: "Darlington Akogo"}, function(status) {
$('.user-record-interface').load("Includes/ajax-user-summary.php");
});
});
答案 1 :(得分:3)
您的问题听起来与this one非常相似,因此立即明确的答案是无法在Android的WebView或WebViewClient上读取请求标头。
然而,有一些解决方法可以让你得到你需要的东西。 This answer更详细地描述了如何执行此操作。答案 2 :(得分:1)
通过this way,您可以为网络视图应用启用调试,并使用Chrome开发者工具查看您的请求,响应,CSS,javascripts等的完整详细信息
答案 3 :(得分:1)
我在WebView myWebView
中拦截请求标头时遇到了一些问题。
首先,我尝试为WebViewClient
设置自定义myWebView
。
myWebView.setWebViewClient(new WebViewClient() {
@Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api >= 21 called");
//some code
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api < 21 called");
//some code
return true;
}
});
但是方法shouldOverrideUrlLoading(...)
从未被调用过。我真的不知道为什么。
然后我发现可以拦截一些常见标题,例如"User-Agent"
,"Cache-Control"
等:
myWebView.getSettings().setUserAgentString("your_custom_user_agent_header");
myWebView.getSettings().setCacheMode(int mode);
...
希望它可以帮助某人。