2012-02-13 10 views
6

埋め込みWebviewによってリクエストと開始時刻と終了時刻を記録する方法を探しています。私はこれまでに電話をかけてtcpdumpを実行する以外の方法を見つけることができません。それは私のために働くが、私は現場でこれを実行する必要があるので、それは実用的ではない。 URLと開始時間を記録する方法はたくさんありますが、仕上げ(または、ボーナス、完全な応答メタデータ)が表示されません。ログ埋め込みAndroid WebViewからのHTTPリクエストの開始と終了

shouldLoadResourceは現在のリクエストをラップすることができますが、内側のリクエストに完全に転送するのに十分なAPIがないため、HTTPサポートを使用して直接返す必要があります。 (私は、デバイス上のwebviewがHTTPクラスと同じネットワークスタックを使用しないこと、サブリソースのタイミングを変更するためなど、いくつかの理由でこれをやりたいとは思わない)

私は、これを行うにはchromium_netデバッグフラグをオンにする方法を見つけようとしていましたが、WebViewまたはシステムのプロパティのコンテキストでどのように行うのかわかりません。

私は本当に、むしろこれを行うには私自身のwebcoreを出荷していないだろうが、その場合にはニーズなければならない...

+0

shouldInterceptRequest()だけチェック...あなたは「組み込みのWebViewを」と言うとき、あなたのアプリが作成したのWebViewまたは1つは、あなたが何らかの形で継承されたということでしょうか? – Torid

+0

私のアプリで作成されます。 APIで許される範囲で、私は水平と垂直を制御します。 – shaver

答えて

0

をすれば、あなたも(http://developer.android.com/reference/android/webkit/WebViewClient.htmlを参照)WebViewClientを追加することができます。それらは、アイフレームまたはフレームセットのために呼び出されることはありません - 両方shouldOverrideUrlLoadingとはonPageFinishedのみのみメインフレームのために呼ばれていることを

WebView webView.setWebViewClient(new MyWebViewClient()); 

. 
. 
. 

public class MyWebViewClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
    // Note time 

    // Return false to say we want the WebView to handle the url. 
    return false; 
    } 

    @Override 
    public void onPageFinished (WebView view, String url) 
    { 
    super.onPageFinished(view, url); 

    // Note time 
    } 
} 

注ようになりますどの。しかし、これはあなたに必要なものを与えるはずです。

+0

申し訳ありませんが、私は明確ではなかったと思います。トップレベルのページだけでなく、すべてのリクエストを見る必要があります。画像、スタイルシート、スクリプト、XHRなどです。そのため、shouldLoadResourceは有望でした。 – shaver

2

オーバーライドメソッド

@Override 
public WebResourceResponse shouldInterceptRequest(WebView view, String url) { 
    Log.d(LOG_TAG, "shouldInterceptRequest: " + url); 

    return super.shouldInterceptRequest(view, url); 
} 
関連する問題