Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.NoSuchMethodError:okhttp3.internal.http.HttpEngine.recover_Android_Android Ksoap2_Okhttp3 - Fatal编程技术网

Android java.lang.NoSuchMethodError:okhttp3.internal.http.HttpEngine.recover

Android java.lang.NoSuchMethodError:okhttp3.internal.http.HttpEngine.recover,android,android-ksoap2,okhttp3,Android,Android Ksoap2,Okhttp3,我有一个应用程序,它使用ksoap和底层的okhttp连接 大多数情况下,它都能正常工作,但是在连接重试期间,应用程序会崩溃,并出现NoSuchMethodError。下面是堆栈跟踪 Fatal Exception: java.lang.NoSuchMethodError: okhttp3.internal.http.HttpEngine.recover at okhttp3.internal.huc.HttpURLConnectionImpl.execute(HttpURLConne

我有一个应用程序,它使用ksoap和底层的
okhttp
连接

大多数情况下,它都能正常工作,但是在连接重试期间,应用程序会崩溃,并出现NoSuchMethodError。下面是堆栈跟踪

Fatal Exception: java.lang.NoSuchMethodError: okhttp3.internal.http.HttpEngine.recover
     at okhttp3.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:493)
     at okhttp3.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
     at okhttp3.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:261)
     at org.ksoap2.transport.OkHttpServiceConnectionSE.openOutputStream(OkHttpServiceConnectionSE.java:124)
     at org.ksoap2.transport.HttpTransportSE.sendData(HttpTransportSE.java:292)
     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:184)
     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
     at uk.org.xibo.xmds.CheckConnection.run(CheckConnection.java:106)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:841)
我确实使用了proguard,并添加了一些规则,这样okhttp就不用管了:

-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.** 
我的成绩文件包含以下依赖项:

compile 'com.squareup.okio:okio:1.8.0'
compile 'com.squareup.okhttp3:okhttp:3.3.0'
compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
我已经尝试反编译生成的APK,并且可以确认
okhttp3.internal.http.HttpEngine.recover
方法确实存在

缺少的方法的来源如下:

我不知道如何继续调试这个问题,或者我是否做了一些明显错误的事情

谢谢你的帮助


编辑:

新理论-ksoap2 android必须成为okhttp库的一部分:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp-urlconnection</artifactId>
    <version>3.2.0</version>
</dependency>

com.squareup.okhttp3
okhttp URL连接
3.2.0
HttpEngine
方法包含在主要的okhttp库中-是否my对okhttp v3.3.0的引用提供了ksoap2库中的
HttpEngine
正在使用的
HttpURLConnectionImpl
v3.2.0


我已经将我的okhttp依赖关系降级为
编译'com.squareup.okhttp3:okhttp:3.2.0'
,并安装在一些设备上进行测试。如果这是问题,我会更新答案。

为延迟道歉-恢复到
在我的gradle文件中编译'com.squareup.okhttp3:okhttp:3.2.0'
确实解决了问题。

将其更新到最新版本:
实现(“com.squareup.okhttp3:okhttp:3.13.1”)
。这对我的情况很有帮助。

是的,通过将okhttp依赖关系降级到
编译'com.squareup.okhttp3:okhttp:3.2.0'
只起作用。