2012-05-25 8 views
7

Piszę aplikację dla systemu Android, która korzysta z przeglądarki internetowej do żądania treści z serwera WWW, ale za pomocą mWebView.loadUrl (url1, nagłówki); zastosuje tylko nagłówki do początkowego żądania, a nie do zasobów w żądaniu.Android - Webview tylko stosujące nagłówki do początkowego żądania

Każdy pomysł, jak to zrobić, aby zastosować nagłówki do żądań zasobów?

+0

+1 @stotherd dostałeś żadnego rozwiązania tego problemu siedzę z tym też i nie był w stanie znaleźć rozwiązanie? –

+0

Niestety nie, musiałem poprosić o zasoby indywidualnie oddzielnie, a następnie nie ukończyłem projektu. – stotherd

Odpowiedz

0

Nie absolutnie pewien, ale można spróbować zastąpić shouldOverrideUrlLoading(WebView view, String url) metody i obsługiwać wszystkie przekierowania zaczynając mWebView.loadUrl(url, yourHeaders); nie zapomnij wrócić prawda w tej metodzie nadpisane.

+0

możesz to rozwinąć –

0

Po pierwsze, pozwól mi powiedzieć, że nie mogę uwierzyć, że ten widok jest tak duży.

To co zrobiłem przekazać niestandardowe nagłówki

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

}