2012-02-13 6 views
6

Szukam sposobu rejestrowania żądań i czasów rozpoczęcia/zakończenia wykonanych przez osadzoną przeglądarkę internetową. Nie jestem w stanie znaleźć sposobu, by zrobić to inaczej niż zrootowanie telefonu i uruchomienie tcpdump. To działa dla mnie, ale muszę to uruchomić w terenie, więc nie jest to możliwe. Istnieje wiele sposobów rejestrowania adresu URL i czasu rozpoczęcia, ale nie widzę końca (lub bonusu, pełnych metadanych odpowiedzi).Rejestrowanie żądania HTTP - rozpoczęcie i zakończenie z wbudowanego systemu Android WebView

PowinienRozkład powinien działać, gdybym mógł zawinąć bieżące żądanie, ale musiałbym pobrać go sam za pomocą wsparcia HTTP, aby zwrócić go masowo, ponieważ nie ma wystarczającej ilości API narażonych na pełne przekazanie do wewnętrznego żądania . (Nie chcę tego robić z wielu powodów, w tym że przeglądanie stron na urządzeniach nie korzysta z tego samego stosu sieciowego co klasy HTTP, i ponieważ spowoduje zmianę czasu subresources.)

Ja " próbowałem znaleźć sposoby na włączenie flag debugowania chromium_net, ale nie mogę wymyślić, jak to zrobić w kontekście WebView lub właściwości systemu.

Chciałbym naprawdę raczej nie wysyłać własne webcore to zrobić, ale jeśli potrzeby powinny ...

+0

Tylko sprawdzam ... Kiedy mówisz „osadzony webview” jest to, że WebView aplikacja stworzona lub jeden ty dziedziczone w jakiś sposób? – Torid

+0

Utworzono w mojej aplikacji. W zakresie dozwolonym przez API kontroluję poziomy i pionowy. – shaver

Odpowiedz

0

W takim przypadku, można również dodać WebViewClient (patrz http://developer.android.com/reference/android/webkit/WebViewClient.html). Które mogłyby wyglądać

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

Należy zauważyć, że zarówno shouldOverrideUrlLoading i onPageFinished nazywane są tylko wyłącznie do ramy głównej - nie zostanie wywołana dla iframe lub ramek. Ale to powinno dać ci to, czego potrzebujesz.

+0

Przepraszam, myślę, że nie było jasne. Muszę zobaczyć wszystkie prośby, nie tylko te dotyczące stron najwyższego poziomu. Obrazy, arkusze stylów, skrypty, XHR itp. Właśnie dlatego LoadResource powinien wyglądać obiecująco. – shaver

2

metoda przesłanianie shouldInterceptRequest()

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

    return super.shouldInterceptRequest(view, url); 
} 
Powiązane problemy