2012-05-25 4 views
7

Escribo una aplicación de Android que usa webview para solicitar contenido de un servidor web, pero usando mWebView.loadUrl (url1, encabezados); solo aplicará los encabezados a la solicitud inicial y no a los recursos en la solicitud.Android - Webview solo aplicando encabezados a la solicitud inicial

¿Alguna idea de cómo aplicar los encabezados a las solicitudes de recursos también?

+0

1 @stotherd llegaste ninguna solución a este problema que estoy atascado con esto también y no era capaz de encontrar una solución? –

+0

Desafortunadamente no, tuve que solicitar los recursos individualmente por separado, y luego no completé el proyecto. – stotherd

Respuesta

0

No estoy del todo seguro, pero puede intentar anular el método shouldOverrideUrlLoading(WebView view, String url) y manejar todos los redireccionamientos comenzando mWebView.loadUrl(url, yourHeaders); No olvide devolver la verdad en ese método anulado.

+0

puede elaborar esto –

0

Antes que nada, déjenme decir que no puedo creer que la vista web sea tan mala.

Esto es lo que hice para pasar cabeceras personalizadas

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

}

Cuestiones relacionadas