android post 请求参数,Android拦截并获取WebView内部POST请求参数

本文探讨了在Android中如何在H5不知情的情况下获取WebView内部POST请求的参数。通过拦截请求并注入JS代码,实现在每次Ajax请求时将参数传递给客户端。详细介绍了两种方案,包括直接拦截请求的局限性和利用JS注入实现Ajax请求拦截的方法。
摘要由CSDN通过智能技术生成

起因:

有些时候自家APP中嵌入的H5页面并不是自家的。但是很多时候又想在H5不知情的情况下获取H5内部请求的参数,这应该怎么做到呢?

带着这个疑问,就有了这篇博客。

实现过程:

方案一:

最开始想到的方案是直接拦截H5中所有的请求:

webView.setWebViewClient(new WebViewClient() {

@Override

public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {

try {

URL url = new URL(request.getUrl());

} catch (MalformedURLException e) {

e.printStackTrace();

}

Log.e("InternetActivity", request + "");

return super.shouldInterceptRequest(view, request);

}

});

但是通过此方法只能获取get请求的参数(因为参数直接拼在了url链接中),对于post请求的参数无可奈何。

方案二:

后来参考了request_data_webviewclient,有了新的实现方式,具体原理为:给H5注入一段js代码,目的是在每次Ajax请求都会调用Android原生的方法,将请求参数传给客户端。

具体流程如下:

2f5630ee53e1cab2e6cb7be7196cdf91.png

其中,

js注入代码:

function generateRandom() {

return Math.floor((1 + Math.random()) * 0x10000)

.toString(16)

.substring(1);

}

// This only works if &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值