2012-11-09 4 views
5

versucht, die User-Agent-Zeichenfolge in der HTTP-Anfrage einer Android-App zu ändern. Ich habe das zusammen mit Wireshark und dem Emulator getestet und habe festgestellt, dass, obwohl ich die Useragent-Zeichenfolge in der Webansicht gesetzt habe, die zugehörige loadUrl-Anfrage diese User-Agent-Zeichenfolge nicht verwendet. Stattdessen sehe ich die Dalvik useragent Zeichenkette in der Wireshark Capture. Hier ist der Code abstrakt. Irgendwelche Ideen? Oder unterstützt der Emulator das nicht?setUserAgentString in Android-Webansicht hat keine Auswirkungen auf HTTP-Header in loadURL() verwendet

@Override 
public void run() { 
    assert(context != null); 

    ... 
    ... 
    webView = new WebView(context); 
    ... 
    String defaultUserAgent = "betaUAteststring"; 


    // Clear per-application caches etc 
    webView.clearCache(true); 
    webView.clearHistory(); 
    webView.getSettings().setAppCacheEnabled(false); 
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webView.getSettings().setJavaScriptEnabled(true); 


    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
     .... 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     .. 
     } 

     @Override 
     public void onLoadResource(WebView view, String url) { 
     ... 
     } 
    }); 


    // Start loading 


    webView.getSettings().setUserAgentString(defaultUserAgent); 
    String setUA = webView.getSettings().getUserAgentString(); 
    //--> logging here shows the correct user agent, so the webview does accept the value 
    // However the following statement does not result in an http request with the webviews user agent 
    webView.loadUrl(url); 

    //Alternative doesn't help either (and shouldn't according to javadoc) 

    //Map<String,String> headerMap = new HashMap<String,String>(); 
    //headerMap.put("User-Agent","uaTestInAMap");   
    //webView.loadUrl(url, headerMap); 
} 

Antwort

1

Beantworten meiner eigenen Frage. Es scheint, dass der Emulator aus irgendeinem Grund die Zeichenfolge des Benutzeragenten nicht aus der Webansicht übernimmt. Den Grund dafür habe ich jedoch nicht herausgefunden. Der Code funktioniert auf einem echten Gerät.

0

Sie vermissen es, das standardmäßige Android-Verhalten bei geöffneter URL zu überschreiben (Standardbrowser starten). Um Ihr fertigen Browser zu verwenden, um zu navitage, Sie nur eine WebViewClient zu WebView befestigen haben

Das erreichen fügt die folgende Zeile Code:

webView.setWebViewClient(new WebViewClient()); 

Cheers, Rodrigo

+0

Ich glaube, ich mache ich das in der Zeile "webView.setWebViewClient (new WebViewClient() ....." – damcify

Verwandte Themen