我的任务是通过 HTTPS 在 WebView 中加载网站,而香草 Android TLS 密码不支持。现在作为概念证明,我已经实现了能够对这些资源进行 http 请求的 apache http 客户端。
使 WebView 使用我的自定义客户端实现来执行所有网络请求的最佳方法是什么?
我的任务是通过 HTTPS 在 WebView 中加载网站,而香草 Android TLS 密码不支持。现在作为概念证明,我已经实现了能够对这些资源进行 http 请求的 apache http 客户端。
使 WebView 使用我的自定义客户端实现来执行所有网络请求的最佳方法是什么?
实际上,接受的答案是错误的。你没有得到完整的信息;缺少的是请求主体。
所以你可以很好地实现 GET 或 HEAD 请求,但 POST 请求更棘手。
我还没有看到一个好的解决方案。我遇到的一个使用插入页面的 JavaScript 来收集 POST 数据,通过绑定https://developer.android.com/guide/webapps/webview.html#BindingJavaScript将其交给 Java ,然后执行请求爪哇。
不幸的是,WebView 将尝试再次执行相同的请求,因此您需要添加更多的hackery 才能使其工作。
从 Android 5.0 (API 21+) 开始,您可以使用WebViewClient.shouldInterceptRequest(WebView, WebResourceRequest)
拦截包含完整信息的 Web 请求并使用自定义 HTTP 客户端执行它们。
感谢@Stan 的提示。