繁体   English   中英

标头无法在WebView Android中使用

[英]Headers not working in WebView Android

我是一名Android程序员,但有一个问题已经尝试解决了一段时间:

我使用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);
        }
    };
}

这是我的方法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;
    }
}

我已经尝试解决这个问题一段时间了。 我将非常感谢您的帮助🙏🏻

传递标头以使用重定向的正确方法是什么?

事先非常感谢

您的getCustomHeaders()方法在哪里? 如果您要在loadUrl中发送标头,那么它将被重定向到仅收到的第一个响应,此时您只需要从后端获取它即可。 但是对于重定向,您将必须实现自定义请求/响应。

暂无
暂无

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

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