【问题标题】:upgrading OkHttp3 library升级 OkHttp3 库
【发布时间】:2018-03-14 08:24:23
【问题描述】:

我正在使用 Okhttp:3.4.1 。使用这个,所有的 https 调用都给了

java.net.protocolexception:预期的 ':status' 标头不存在。

一些博客建议更新 Okhttp。当我从 3.4.1 更新到 3.10.0 时,我得到了

java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:318)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

Caused by: java.lang.NoSuchMethodError: No virtual method setCallWebSocket(Lokhttp3/Call;)V in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/app/com.XXXXXX.android-1/split_lib_dependencies_apk.apk:classes85.dex)
at okhttp3.ws.WebSocketCall.enqueue(WebSocketCall.java:108)
at com.facebook.react.devsupport.InspectorPackagerConnection$Connection.connect(InspectorPackagerConnection.java:243)
at com.facebook.react.devsupport.InspectorPackagerConnection.connect(InspectorPackagerConnection.java:44)
at com.facebook.react.devsupport.DevServerHelper$3.doInBackground(DevServerHelper.java:204)
at com.facebook.react.devsupport.DevServerHelper$3.doInBackground(DevServerHelper.java:200)
at android.os.AsyncTask$2.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
at java.lang.Thread.run(Thread.java:761) 

我正在使用 react-native:0.45.1

【问题讨论】:

  • 它是否发生在 Android 版本 16-20 和大多数三星设备上?如果是这样,那么这是一个未解决的问题github.com/square/okhttp/issues/2372
  • @YogeshTelang 不,所有设备都在发生这种情况

标签: android react-native okhttp3


【解决方案1】:

React Native 使用 okhttp 作为依赖,升级 okhttp 可能会导致一些兼容性问题。目前它使用 okhttp 3.6.0 (https://github.com/facebook/react-native/blob/8466db0fd355aea778ff71cfb10c927cfd18a551/ReactAndroid/build.gradle#L288)。所以我的建议是,就这样吧。

【讨论】:

  • 但是,v3.4.1 使用 https 失败。
  • @M.Prabhakaran 有任何证据支持你的论点吗?如果您使用最新的 react native 并导入 okhttp 3.4.1,则 gradle 在解决此问题时将使用 3.6.0。而且我们使用的是okhttp 3.6.0,发现https没有问题。
猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2018-08-04
  • 2018-10-28
  • 2018-06-07
  • 1970-01-01
  • 2017-12-09
相关资源
最近更新 更多