美文网首页
android webview ajax方式添加header,t

android webview ajax方式添加header,t

作者: hudafei | 来源:发表于2019-06-21 16:28 被阅读0次

        app项目里和m站webview进行交互时,一直存在一个问题,webview在最开始初始化的时候,加了header请求头和用户的token,但是如果这个链接进行跳转操作的时候,普通的a标签进行跳转页面的时候,header头和token还是可以传过去的,但是如果发起ajax请求后端接口时,header头和token头是带不过去的,有些需要拿到用户信息来操作的时候,就会有问题。参照了网上的很多博客,进行处理操作。

webview.setWebViewClient(new setWebViewClient())方法中有一个方法是可以拦截所有的链接的,那我们就可以在这个方法里做点儿文章了。

public WebResourceResponse shouldInterceptRequest(WebView view, String url) {}

这个方法虽然已经过时了,但是还可以用。

具体代码如下

@Nullable

@Override

public WebResourceResponseshouldInterceptRequest(WebView view, String url) {

String ajaxUrl = url;

        try {

            URI uri = URI.create(ajaxUrl);

            URL url1 = uri.toURL();

            HttpURLConnection conn = (HttpURLConnection) url1.openConnection();

            conn.setConnectTimeout(5000);

            conn.setReadTimeout(5000);

            conn.setRequestProperty("Authorization", getHeader().get("Authorization")); // 这里可以设置请求头

            conn.setRequestProperty("User-Agent", " xxx/" + DeviceHelper.installVersion());

            conn.connect();

            DataInputStream dis =null;

            // 判断请求是否成功

            if (conn.getResponseCode() ==200) {

                // 获取返回的数据

                MyLog.error("Get方式请求成功,result--->");

            }else {

                    MyLog.error("Get方式请求失败");

            }

                if (conn.getInputStream() !=null) {

                    dis =new DataInputStream(conn.getInputStream());

                }else {

                    return super.shouldInterceptRequest(view, ajaxUrl);

                   }

                String mimeType = conn.getContentType();

            // 关闭连接

                    conn.disconnect();

                    return new WebResourceResponse(mimeType, "UTF-8", dis);

                }catch (Exception e) {

                        e.printStackTrace();

                }

            return super.shouldInterceptRequest(view, ajaxUrl);

}

但是这个方法就是只能用于get请求,因为post方法如果携带参数的话,我们是拿不到的,有点儿问题。

ps:简书为什么不能插入代码呢,这可恶的排版。

相关文章

网友评论

      本文标题:android webview ajax方式添加header,t

      本文链接:https://www.haomeiwen.com/subject/yxxtfctx.html