简体   繁体   English

标头无法在WebView Android中使用

[英]Headers not working in WebView Android

I am an Android programmer I have a problem that I have been trying to solve for some time: 我是一名Android程序员,但有一个问题已经尝试解决了一段时间:

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. 我使用webview,并传递标头以从Web删除页脚和标头 ,但是在进行重定向时标头会丢失。

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 这是我的方法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 事先非常感谢

Where is your getCustomHeaders() method? 您的getCustomHeaders()方法在哪里? 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. 如果您要在loadUrl中发送标头,那么它将被重定向到仅收到的第一个响应,此时您只需要从后端获取它即可。 But for redirections you'll have to implement custom request/response. 但是对于重定向,您将必须实现自定义请求/响应。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM