我遇到了一个问题,大约是 OkHttpClient
的三分之一newCall(request).execute();
对服务器的请求失败,但出现以下异常:
Exception java.io.IOException: unexpected end of stream on Connection{[REDACTED_DOMAIN_NAME]:80, proxy=DIRECT@ hostAddress=[REDACTED_DOMAIN_NAME]/[REDACTED_IP_ADDRESS] cipherSuite=none protocol=http/1.1}
我禁用了证书验证。这种行为的原因可能是什么?
最佳答案
OkHttpClient 的默认请求协议(protocol)是 HTTP2.0。
某些 Web 服务需要 HTTP1.1 请求。
将protocols(listOf(Protocol.HTTP_1_1)) 行添加到您的OkHttpClient。
例子;
val okHttpClient = OkHttpClient.Builder()
.protocols(listOf(Protocol.HTTP_1_1))
.readTimeout(40, TimeUnit.SECONDS)
.connectTimeout(40, TimeUnit.SECONDS)
.addInterceptor(loggingInterceptor)
.addInterceptor(authInterceptor)
.retryOnConnectionFailure(true)
.build()
关于android - 好的http。异常 java.io.IOException : unexpected end of stream on Connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49433188/