2012-05-25 4 views
7

Ich schreibe eine Android-App, die Webview verwendet, um Inhalt von einem Webserver anzufordern, aber mit mWebView.loadUrl (URL1, Header); wendet nur die Header auf die anfängliche Anfrage und nicht auf die Ressourcen in der Anfrage an.Android - Webview nur Header auf erste Anfrage anwenden

Haben Sie eine Idee, wie die Header auch auf die Ressourcenanforderungen angewendet werden?

+0

+1 @stotherd haben Sie eine Lösung für dieses Problem umgehen ich mit diesem zu stecken bin und war zu finden Lösung nicht in der Lage? –

+0

Leider nein, ich musste die Ressourcen einzeln einzeln anfordern, und habe dann das Projekt nicht abgeschlossen. – stotherd

Antwort

0

nicht absolut sicher, aber man kann versuchen shouldOverrideUrlLoading(WebView view, String url) Methode außer Kraft zu setzen und alle Umleitungen Griff durch Starten mWebView.loadUrl(url, yourHeaders); Dont in dieser überschriebenen Methode true zurück, vergessen.

+0

können Sie das ausarbeiten –

0

Zunächst möchte ich sagen, dass ich nicht glauben kann, dass Webview so viel saugt.

Dies ist, was ich benutzerdefinierte Header passieren tat

public class CustomWebview extends WebView { 



    public void loadWithHeaders(String url) { 

     setWebViewClient(new WebViewClient() { 

     @Override 
     public WebResourceResponse shouldInterceptRequest(WebView view, String url) { 
      //makes a custom http request, which allows you to add your own headers 
      return customRequest(url); 
     } 
     }); 

     loadUrl(url); 
    } 


    /** 
    * Custom http request with headers 
    * @param url 
    * @return 
    */ 
    private WebResourceResponse customRequest(String url) { 

    try { 

     OkHttpClient httpClient = new OkHttpClient(); 

     Request request = new Request.Builder() 
       .url(url.trim()) 
       .addHeader("Header-Name", "Android Sucks") 
       .build(); 

     Response response = httpClient.newCall(request).execute(); 

     return new WebResourceResponse(
       "text/html", // You can set something other as default content-type 
       "utf-8", // Again, you can set another encoding as default 
       response.body().byteStream() 
     ); 
    } catch (IOException e) { 
     //return null to tell WebView we failed to fetch it WebView should try again. 
     return null; 
    } 
} 

}

Verwandte Themen