我遇到了一个问题,对服务器的所有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}
我禁用了证书验证。这种行为可能是什么原因?
答案 0 :(得分:0)
OkHttpClient 的默认请求协议是 HTTP2.0。 某些 Web 服务需要 HTTP1.1 请求。
将协议(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()