java.io.IOException: unexpected end of stream on https://xxx.xxx.xxx.xxx:84/

错误描述:

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时间。

 

 


版权声明:本文为qq_40979609原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。