2012-02-13 11 views
6

Estoy buscando una forma de registrar las solicitudes y las horas de inicio/finalización de una vista web incrustada. No puedo encontrar una manera de hacerlo tan lejos de rootear el teléfono y ejecutar tcpdump. Eso funciona para mí, pero necesito ejecutar esto en el campo, por lo que no es realmente viable. Hay muchas maneras de registrar la URL y la hora de inicio, pero no puedo ver el final (o, bonificación, los metadatos de respuesta completa).logging inicio y finalización de la solicitud HTTP desde Android WebView incrustado

shouldLoadResource podría funcionar si pudiera ajustar la solicitud actual, pero tendría que buscarla yo mismo con soporte HTTP para devolverla en masa, porque no hay suficiente API expuesta para reenviar por completo a la solicitud interna . (No quiero hacer eso por una serie de razones, incluyendo que la vista web en dispositivos no usa la misma pila de red que las clases HTTP, y porque cambiará el tiempo de los subrecursos.)

I ' He estado tratando de encontrar formas de activar las banderas de depuración chromium_net para hacer esto, pero no puedo entender cómo hacerlo en el contexto de WebView o de las propiedades del sistema.

yo realmente preferiría no enviar mi propia WebCore para hacer esto, pero si es necesario debe ...

+0

Apenas llegando ... Cuando dice "vista web embebido" es que un WebView su aplicación creada o una que heredaron de alguna manera? – Torid

+0

Creado en mi aplicación. En la medida permitida por la API, controlo la horizontal y la vertical. – shaver

Respuesta

0

En ese caso, también se puede añadir un WebViewClient (ver http://developer.android.com/reference/android/webkit/WebViewClient.html). ¿Qué sería algo como

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

Tenga en cuenta que tanto shouldOverrideUrlLoading y onPageFinished solamente se llaman sólo para el cuadro principal - que no será llamado para marcos flotantes o conjuntos de marcos. Pero esto debería darte lo que necesitas.

+0

Lo siento, creo que no estaba claro. Necesito ver todas las solicitudes, no solo las de las páginas de nivel superior. Imágenes, hojas de estilo, guiones, XHR, etc. Es por eso que shouldLoadResource parecía prometedor. – shaver

2

método de reemplazo shouldInterceptRequest()

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

    return super.shouldInterceptRequest(view, url); 
} 
Cuestiones relacionadas