2017-12-19 34 views
1

나는 생각 안드로이드 프로그래머 나는 몇 시간 동안 해결하기 위해 노력 해왔다 문제가 있습니다헤더는 웹보기 안드로이드에서 작동하지

나는 웹보기를 사용하고 난에서 바닥 글과 헤더을 제거하는 헤더를 통과를 웹, 리디렉션을하면 헤더가 손실됩니다.

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