2017-12-19 14 views
1

I午前Androidのプログラマ私はいくつかの時間のために解決しようとしている問題があります。ヘッダは、WebViewのアンドロイドで動作しない

私はWebViewのを使用して、私からフッタとヘッダを除去するためのヘッダを渡すをウェブの場合、リダイレクトが作成されたときにヘッダーが失われます。

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

これは私の方法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; 
    } 
} 

です。私は大いに助けていただければ幸いです

リダイレクトを扱うためにヘッダーを渡す正しい方法は何ですか?

事前にあなたに

答えて

0

あなたgetCustomHeaders()メソッドでは非常に感謝しますか? loadUrlでヘッダーを送信している場合は、受信した最初の応答のみにリダイレクトされます。その時点でバックエンドから取得する必要があります。しかし、リダイレクトの場合、カスタムリクエスト/レスポンスを実装する必要があります。

+0

getCustomHeadersメソッドを追加しました。 WebViewに別のURLを表示するリクエストを作成するにはどうすればよいですか? –

+0

これを確認してください。https://stackoverflow.com/a/41257265/2738786しかし、私はあなたのバックエンドで変更を行う代わりに、実装することをお勧めしません。 – NateshR

関連する問題