Java 带有自定义HTTP客户端的WebView

Java 带有自定义HTTP客户端的WebView,java,android,webview,apache-httpclient-4.x,Java,Android,Webview,Apache Httpclient 4.x,我的任务是通过HTTPS在WebView中加载web站点,但不支持香草安卓TLS密码。 现在,作为概念证明,我已经实现了ApacheHTTP客户端,能够对这些资源执行http请求 让WebView使用我的自定义客户端实现来执行所有网络请求的最佳方法是什么?因为Android 5.0(API 21+)可以用来截取包含完整信息的web请求,并使用自定义HTTP客户端执行这些请求 谢谢@Stan的提示。事实上,公认的答案是错误的。你没有得到完整的信息;缺少的是请求主体 因此,您可以很好地实现GET或H

我的任务是通过HTTPS在WebView中加载web站点,但不支持香草安卓TLS密码。 现在,作为概念证明,我已经实现了ApacheHTTP客户端,能够对这些资源执行http请求

让WebView使用我的自定义客户端实现来执行所有网络请求的最佳方法是什么?

因为Android 5.0(API 21+)可以用来截取包含完整信息的web请求,并使用自定义HTTP客户端执行这些请求


谢谢@Stan的提示。

事实上,公认的答案是错误的。你没有得到完整的信息;缺少的是请求主体

因此,您可以很好地实现GET或HEAD请求,但POST请求更为复杂

我还没有找到解决这个问题的好办法。我遇到过一个使用JavaScript插入页面来收集POST数据,通过绑定将其传递给Java,然后用Java执行请求


不幸的是,WebView将再次尝试执行相同的请求,因此您需要添加更多的黑客技术以使其正常工作。

我开始认为这是不可能的。我找到了
WebViewClient.shouldInterceptRequest()
,通过它我可以用自己的http客户端向页面资源发出网络请求,但是这个方法只传递请求的url,没有相关的请求信息(http方法GET/POST/…,http头等),所以它不能用于真正的“代理”。请注意,从Android 5.0开始,在新版本的
shouldInterceptRequest
中,通过参数可以使用请求方法和头。