8

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

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

4

2 回答 2

4

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

所以你可以很好地实现 GET 或 HEAD 请求,但 POST 请求更棘手。

我还没有看到一个好的解决方案。我遇到的一个使用插入页面的 JavaScript 来收集 POST 数据,通过绑定https://developer.android.com/guide/webapps/webview.html#BindingJavaScript将其交给 Java ,然后执行请求爪哇。

不幸的是,WebView 将尝试再次执行相同的请求因此您需要添加更多的hackery 才能使其工作。

于 2017-07-06T09:23:07.027 回答
0

从 Android 5.0 (API 21+) 开始,您可以使用WebViewClient.shouldInterceptRequest(WebView, WebResourceRequest)拦截包含完整信息的 Web 请求并使用自定义 HTTP 客户端执行它们。

感谢@Stan 的提示。

于 2015-12-14T20:07:22.137 回答