Android 内部使用 OkHttp 吗?

Posted

技术标签:

【中文标题】Android 内部使用 OkHttp 吗?【英文标题】:Does Android use OkHttp internally? 【发布时间】:2014-11-17 22:49:06 【问题描述】:

这是我在运行我最近继承的 android 应用程序时得到的堆栈跟踪。我们没有使用 OkHttp 作为显式依赖项,跟踪中的 com.android.okhttp 让我认为 AOSP 现在在内部使用 OkHttp ?

java.lang.Throwable: Explicit termination method 'close' not called
E      at dalvik.system.CloseGuard.open(CloseGuard.java:184)
E      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:278)
E      at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
E      at com.android.okhttp.Connection.connect(Connection.java:107)
E      at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
E      at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
E      at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
E      at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
E      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
E      at com.android.okhttp.internal.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:143)
E      at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:544)
E      at java.net.URLConnection.getContentLength(URLConnection.java:316)
E      at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getContentLength(HttpsURLConnectionImpl.java:182)

【问题讨论】:

在 Android KitKat 中,是的。来源:***.com/questions/23168450/… 这让我陷入困境,试图找出依赖的来源。 【参考方案1】:

是的,Android as of Android 4.4 正在将 OkHttp 用于其内部的 HttpUrlConnection 实现。

【讨论】:

之前用的是什么? @ddog:很可能来自Apache Harmony。 这是一个较旧的前叉。因此,您的应用中的 OkHttp 4.9.1 不会影响 HttpUrlConnection。

以上是关于Android 内部使用 OkHttp 吗?的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Android studio中OKHttp安装及简单使用

网络请求框架-OkHttp原理解析

我可以通过 NPN 协商使用 OkHttp 发送 http/2 请求吗?

Android - 将 OkHttp 与 Webview 一起使用

Android--第三方控件--okHttp

webservice是基于soap协议的,在android端可以用okhttp建立连接吗