2013-10-30 72 views
6

Android WebViewからのリクエストをすべて傍受し、対応するリクエストヘッダーを取得するにはどうすればよいですか? XHR、スクリプトソース、CSSなどを含むWebViewからのすべてのリクエストのヘッダーを確認したいと思います。Android WebViewリクエストでリクエストヘッダーを確認するにはどうすればよいですか?

iOSの同等機能は、この情報をすべて提供するNSURLCacheを上書きすることです。

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

Androidの「WebView」または「WebViewClient」、afaikでは要求ヘッダーを読み取ることはできません。軽量プロキシを使用してこの問題を解決しました。 – acj

+0

@acj - 'WebView'または外部(ルータ/ネットワークレベル)でプロキシをプログラムで実行しましたか? –

+0

モバイルネットワークでデバイス設定で設定します。別のオプション:ヘッダーをチェックするためのクイックダーティメソッドが必要な場合は、ラップトップでnetcat( 'nc')のインスタンスを起動し、' WebView'をnetcatインスタンスに接続します。 – acj

答えて

3

あなたの質問this oneに非常に似て聞こえるので、即時かつ明確な答えはそれことです:次はおそらく、私は私の知る限りWebViewClientしか私たちに文字列をバック与えますが、見ることができるようにしたいが、どのように最も近いですAndroidのWebViewまたはWebViewClientで要求ヘッダーを読み取ることができません。

ただし、必要なものを得るための回避策があります。 This answerはこれをより詳細に記述する。

1

this wayことによって、あなたは、Web表示用アプリケーションのデバッグを有効にすることができますし、Chromeデベロッパーツールを使用すると、あなたの要求、応答、CSS、JavaScriptのの完全な詳細を確認するなど

3
webview.setWebViewClient(new WebViewClient() { 
      @SuppressLint("NewApi") 
      @Override 
      public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { 
       Log.d("", "request.getRequestHeaders()::"+request.getRequestHeaders()); 

       return null; 
      } 
     }); 
1

私はまた、リクエストヘッダを傍受して、いくつかの問題を抱えていましたWebView myWebViewにあります。

まず、myWebViewのカスタムWebViewClientを設定してこれを試しました。

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; 
      } 

}); 

しかし、方法は決して呼ばれませんでした。そして、私には本当に理由がない。

それから私は"User-Agent""Cache-Control"のようないくつかの共通のヘッダを傍受する方法、等:

myWebView.getSettings().setUserAgentString("your_custom_user_agent_header"); 
myWebView.getSettings().setCacheMode(int mode); 
... 

はそれが誰かを助けるかもしれない希望があることがわかりました。

関連する問題