如何在Android WebView请求中查看请求标头?

时间:2013-10-30 19:53:54

标签: android webview

如何拦截从Android WebView发出的所有请求并获取相应的请求标头?我想看看我的WebView发出的每个请求的标题,包括XHR,脚本来源,CSS等。

iOS上的等价物是覆盖NSURLCache,它会为您提供所有这些信息。以下可能是最接近我想要的,但据我所知WebViewClient只能给我们回字符串:

void onLoadResource(WebView view, String url);
WebResourceResponse shouldInterceptRequest(WebView view, String url);

4 个答案:

答案 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);
...

希望它可以帮助某人。