错误描述:
java.io.IOException: unexpected end of stream on https://xxx.xxx.xxx.xxx:84/...
at okhttp3.internal.http1.Http1ExchangeCodec.readResponseHeaders(Http1ExchangeCodec.java:236)
at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.java:115)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:43)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229)
at okhttp3.RealCall.execute(RealCall.java:81)
at com.ccb.fundsupervision.common.utils.HttpsUtil.postJson(HttpsUtil.java:122)
首先,检查本地的发送post请求的代码:
this.httpClient = new OkHttpClient
.Builder()
.hostnameVerifier((s, session) -> true)
.sslSocketFactory(createSSLContext().getSocketFactory())
.build();
代码没毛病。应该是服务端出问题了,或者是服务端有特殊要求。询问服务端的开发人员即可。
自我排查方法:
1、判断服务端网络是否通畅
telnet ip port
curl url
2、判断是否http连接出问题了
// 1、查看http response头部信息
curl -I url
// 2、查看连接过程
curl -v url
// 3、telnet界面持续时间即为http连接timeout时间。