2020-12-01 11:20:24.357 16113-16534/com.innerfit.app E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.innerfit.app, PID: 16113
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:2064)
at okhttp3.JavaNetCookieJar.decodeHeaderAsJavaNetCookies(JavaNetCookieJar.kt:98)
at okhttp3.JavaNetCookieJar.loadForRequest(JavaNetCookieJar.kt:59)
at com.facebook.react.modules.network.ReactCookieJarContainer.loadForRequest(ReactCookieJarContainer.java:44)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:75)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:71)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.kt:184)
at okhttp3.RealCall$AsyncCall.run(RealCall.kt:136)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Axios请求在一些请求中可以正常工作,但发生了此崩溃,之后什么都不起作用。必须删除并重新安装应用程序才能使其重新工作。
我尝试过的东西:
- 根据此GitHub问题,在所有请求中添加了{"Connection":"close"},但没有解决此问题。https://github.com/facebook/react-native/issues/11016#issuecomment-336685459
- 在Gradle文件中添加了okhttp3依赖项。https://github.com/facebook/react-native/issues/27250#issuecomment-573111088
dependencies {
compile "com.squareup.okhttp3:okhttp:4.2.1"
compile "com.squareup.okhttp3:logging-interceptor:4.2.1"
compile "com.squareup.okhttp3:okhttp-urlconnection:4.2.1"
}
我认为这与这个问题有关:https://github.com/square/okhttp/issues/6897
okhttp_4.2.x->JavaNetCookieJar.kt(https://github.com/square/okhttp/blob/okhttp_4.2.x/okhttp-urlconnection/src/main/java/okhttp3/JavaNetCookieJar.kt)线路:98
if (value.startsWith(""") && value.endsWith(""")) {
value = value.substring(1, value.length - 1)
}
当值只包含一个双引号("(时失败,因为值的长度=1,但它尝试使用startIndex=1 进行子字符串
我添加了一个问题,但如果你需要一个快速解决方案,我认为你需要以某种方式注入你自己的固定版本的JavaNetCookieJar。