2017-12-19 7 views
1

Ich bin ein Android-Programmierer Ich habe ein Problem, das ich versuche schon seit einiger Zeit zu lösen:Header funktionieren nicht in WebView Android

Ich benutze eine Webansicht und ich pass Header Fußzeile und Header von a zu entfernen Web, aber die Header sind verloren, wenn ein Redirect gemacht wird.

public void isLogged() { 

    if (my_preferences.readElement(TAG_LOGGED, false)) { 
     WebSettings webSettings = web_pagos.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     web_pagos.loadUrl(url, getCustomHeaders()); 
     web_pagos.setWebViewClient(getWebViewClient()); 
     cancelProgress(); 


    } else { 
     WebSettings webSettings = web_pagos.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     web_pagos.setWebViewClient(getWebViewClient()); 
     web_pagos.loadUrl(url,getCustomHeaders()); 
     cancelProgress(); 

    } 

} 



private Map<String,String> getHeader() 
{ 
    Map<String,String> header = new HashMap<>(); 
    header.put("nx-bodycss", "app-design"); 
    return header; 

} 


private WebViewClient getWebViewClient() 
{ 

    return new WebViewClient() 
    { 

     @Override 
     @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
     public boolean shouldOverrideUrlLoading(android.webkit.WebView view, WebResourceRequest request) 
     { 
      view.loadUrl(request.getUrl().toString(), getHeader()); 
      return true; 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) 
     { 
      view.loadUrl(url, getHeader()); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      Log.e("ConsultaPasaporte",url); 
      super.onPageStarted(view, url, favicon); 
     } 
    }; 
} 

das ist meine Methode getCustomHeaders

private Map<String, String> getCustomHeaders() 
{ 
    Map<String, String> headers = new HashMap<>(); 
    if(my_preferences.readElement(TAG_LOGGED,false)) { 

     headers.put("nx-bodycss", "app-design"); 
     headers.put("nx-user-identification", MyApplication.get_dataUser().getIdentificacion()); 
     headers.put("nx-user-fecha-pago", MyApplication.get_dataUser().getPago()); 
     headers.put("nx-user-token",MyApplication.getTokenFirebase()); 
     return headers; 
    }else{ 
     headers.put("nx-bodycss", "app-design"); 
     headers.put("nx-user-token",MyApplication.getTokenFirebase()); 


     return headers; 
    } 
} 

Ich habe versucht, dieses Problem für einige Zeit zu lösen. Ich würde die Hilfe sehr schätzen

Was ist die richtige Methode zum Übergeben von Headern mit Umleitungen arbeiten?

Vorweg Vielen Dank

Antwort

0

Wo ist dein getCustomHeaders() Methode? Wenn Sie Header in loadUrl senden, wird es nur an die erste empfangene Antwort umgeleitet, die Sie nur an diesem Punkt von Ihrem Backend abrufen müssen. Für Umleitungen müssen Sie jedoch eine benutzerdefinierte Anfrage/Antwort implementieren.

+0

Ich habe meine getCustomHeaders-Methode hinzugefügt. Wie kann ich die Anforderung zum Anzeigen einer anderen URL in WebView erstellen? –

+0

Überprüfen Sie dies - https://Stackoverflow.com/a/41257265/2738786, aber ich empfehle Ihnen nicht, es zu implementieren, stattdessen Änderungen in Ihrem Backend. – NateshR

Verwandte Themen