okhttpclient 报 java.io.IOException: unexpected end of stream

admin 2022-09-29 PM 2648℃ 0条

今天使用okhttpclient向设备上发信息,错误提示:

java.io.IOException: unexpected end of stream

原因是对方没有正确处理header中的Connection字段所致,经过whistle抓包后发现:Connection = keepalive,但对方没有处理这个值,默认是关闭链接,而客户端还是根据这个值去发起请求。

处理办法:使用Connection = close传输值。

private static class NetInterceptor implements Interceptor {

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request().newBuilder().removeHeader("Connection").addHeader("Connection","close").build();
            return chain.proceed(request);
        }
    }

在初始化代码中加入:

mHttpClient = builder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS)
                    .addNetworkInterceptor(new NetInterceptor())

经过测试后发现,问题得到解决,不再出现:java.io.IOException: unexpected end of stream 的错误。

标签: okhttpclient

非特殊说明,本博所有文章均为博主原创。

评论啦~