Okhttp。异常java.io.IOException:Connection上的意外流结束

时间:2018-03-22 15:57:49

标签: android okhttp ioexception

我遇到了一个问题,对服务器的所有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}

我禁用了证书验证。这种行为可能是什么原因?

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()