Android - 将 OkHttp 与 Webview 一起使用

Posted

技术标签:

【中文标题】Android - 将 OkHttp 与 Webview 一起使用【英文标题】:Android - Use OkHttp with Webview 【发布时间】:2014-04-20 03:24:57 【问题描述】:

可以用okHttp作为webviewclient吗?

mWebView.setWebViewClient(new OkHttpClient());

这给了我一个错误...

The method setWebViewClient(WebViewClient) in the type WebView is not applicable for the arguments (OkHttpClient)

有什么建议吗?

【问题讨论】:

【参考方案1】:

如果您要求的话,WebView 不支持切换网络堆栈。根据版本,它使用 Chrome 网络堆栈的快照,或者对于 HC 之前的设备,使用 WebKit 网络堆栈。

理论上您可以通过shouldInterceptRequest 连接 OkHttp,但我不建议这样做 - 您无法将标头传递给 WebView,您必须手动提取和发送 cookie,而且几乎可以肯定速度较慢,因为 KK 之前的 WebView 一次只读取一个拦截的请求。

【讨论】:

【参考方案2】:

考虑到OkHttpClient 扩展Object 并实现CloneableURLStreamHandlerFactory,而WebView.setWebViewClient() 只接受WebViewClient(反过来,它只扩展Object)没有公共类允许直接这个。

您可能有一些运气可以搜索其他尝试这样做的人,但 OkHttp 似乎没有直接支持这种类型的插入式兼容性。

【讨论】:

以上是关于Android - 将 OkHttp 与 Webview 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Android okhttp的同步与异步请求

Android okhttp的同步与异步请求

Android OkHttp + Retrofit 下载文件与进度监听

与 OkHttp 连接的 Android http 不工作

Android开发老生新谈:从OkHttp原理看网络请求

Android网络请求库【OkHttp4.9.3】基本用法与原理分析