1

I am an Android programmer I have a problem that I have been trying to solve for some time:

I use a webview and I pass headers to remove footer and header from a web, but the headers are lost when a redirect is made.

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

this is my method 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;
    }
}

I've been trying to solve this problem for some time. I would greatly appreciate the help

What is the correct way to pass headers to work with redirects?

Beforehand thank you very much

1 Answers1

0

Where is your getCustomHeaders() method? If your are sending headers in loadUrl then it will be redirected to first response received only, you'll have to fetch it from your back end at that point only. But for redirections you'll have to implement custom request/response.

NateshR
  • 15
  • 1
  • 5