Android环境下,现在系统现在已经全面进入了https,但是最近有个http请求会报错。
使用httpurlconnection和volley请求,分别报错如下:
java.io.IOException: unexpected end of stream on com.android.okhttp.Address@e0faa020
at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:203)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at org.yeshen.okhttp.HttpUtil.getIP$lambda$9(RegionRepository.kt:153)
at org.yeshen.okhttp.HttpUtil.$r8$lambda$J24MS1RNsfmDwMHPs1_F1rIo7Fs(Unknown Source:0)
at org.yeshen.okhttp.HttpUtil$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at org.yeshen.okhttp.HttpUtil$ThreadPoolTask.run(ThreadPool.kt:174)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at java.lang.Thread.run(Thread.java:1119)
Caused by: java.io.EOFException: \n not found: size=0 content=...
at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:202)
at com.android.okhttp.internal.http.Http1xStream.readResponse(Http1xStream.java:188)
at com.android.okhttp.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:129)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:750)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:622)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:475)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at org.yeshen.okhttp.HttpUtil.getIP$lambda$9(RegionRepository.kt:153)
at org.yeshen.okhttp.HttpUtil.$r8$lambda$J24MS1RNsfmDwMHPs1_F1rIo7Fs(Unknown Source:0)
at org.yeshen.okhttp.HttpUtil$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at org.yeshen.okhttp.HttpUtil$ThreadPoolTask.run(ThreadPool.kt:174)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at java.lang.Thread.run(Thread.java:1119)
com.android.volley.NoConnectionError: java.io.IOException: unexpected end of stream on http://yeshen.org/...
at com.android.volley.toolbox.NetworkUtility.shouldRetryException(NetworkUtility.java:173)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:145)
at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:132)
at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)
Caused by: java.io.IOException: unexpected end of stream on http://yeshen.org/...
at okhttp3.internal.http1.Http1ExchangeCodec.readResponseHeaders(Http1ExchangeCodec.kt:202)
at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:106)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:79)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at io.sentry.okhttp.SentryOkHttpInterceptor.intercept(SentryOkHttpInterceptor.kt:116)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
at org.yeshen.okhttp.HttpUtil.executeRequestInternal(OkHttpStack.kt:107)
at org.yeshen.okhttp.HttpUtil.tryRequest(OkHttpStack.kt:142)
at org.yeshen.okhttp.HttpUtil.executeRequest(OkHttpStack.kt:173)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:104)
... 3 more
Caused by: java.io.EOFException: \n not found: limit=0 content=…
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.kt:332)
at okhttp3.internal.http1.HeadersReader.readLine(HeadersReader.kt:29)
at okhttp3.internal.http1.Http1ExchangeCodec.readResponseHeaders(Http1ExchangeCodec.kt:178)
... 22 more
最近定位到是使用了vpn服务,vpn服务有故障,故障点再于:
tls可以完成,但是在读取数据的时候,io被close掉了。
被close的效果,从应用层看就是 “unexpected end of stream on”