我的应用使用 Retrofit 2.0 调用服务端的api接口,我在wifi网络下测试都好了,然后用4G网络测试就报了这个错误。而且是只有GET请求有这个错误 POST请求是好的。
代码:
Request request = chain.request(); Response response = null; int tryCount = 0; do { tryCount++; try { response = chain.proceed(request.newBuilder().addHeader("Authorization", token) .addHeader("Content-Type", "application/json;charset=UTF-8") .addHeader("Connection", "keep-alive") .build()); } catch (IOException e) { //异常在这里报的 e.printStackTrace(); } } while ((response==null || !response.isSuccessful()) && tryCount < 3); return response;
具体异常信息:
06-28 13:32:07.718 30243-30322/ W/System.err: java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer) 06-28 13:32:07.720 30243-30322/ W/System.err: at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:592) 06-28 13:32:07.720 30243-30322/ W/System.err: at libcore.io.IoBridge.recvfrom(IoBridge.java:556) 06-28 13:32:07.720 30243-30322/ W/System.err: at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485) 06-28 13:32:07.720 30243-30322/ W/System.err: at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37) 06-28 13:32:07.720 30243-30322/ W/System.err: at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237) 06-28 13:32:07.720 30243-30322/ W/System.err: at okio.Okio$2.read(Okio.java:139) 06-28 13:32:07.720 30243-30322/ W/System.err: at okio.AsyncTimeout$2.read(AsyncTimeout.java:211) 06-28 13:32:07.720 30243-30322/ W/System.err: at okio.RealBufferedSource.indexOf(RealBufferedSource.java:306) 06-28 13:32:07.720 30243-30322/ W/System.err: at okio.RealBufferedSource.indexOf(RealBufferedSource.java:300) 06-28 13:32:07.720 30243-30322/ W/System.err: at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196) 06-28 13:32:07.720 30243-30322/ W/System.err: at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:184) 06-28 13:32:07.720 30243-30322/ W/System.err: at okhttp3.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:125) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:723) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.internal.http.HttpEngine.access$200(HttpEngine.java:81) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:708) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.internal.http.HttpEngine.readResponse(HttpEngine.java:563) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.RealCall.getResponse(RealCall.java:241) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) 06-28 13:32:07.721 30243-30322/ W/System.err: at .core.api.RetrofitRestClient$2.intercept(RetrofitRestClient.java:120) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) 06-28 13:32:07.721 30243-30322/ W/System.err: at okhttp3.RealCall.execute(RealCall.java:57) 06-28 13:32:07.721 30243-30322/ W/System.err: at retrofit2.OkHttpCall.execute(OkHttpCall.java:174) 06-28 13:32:07.721 30243-30322/ W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(RxJavaCallAdapterFactory.java:171) 06-28 13:32:07.721 30243-30322/ W/System.err: at rx.internal.operators.OperatorSubscribeOn$1$1$1.request(OperatorSubscribeOn.java:80) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.Subscriber.setProducer(Subscriber.java:211) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.internal.operators.OperatorSubscribeOn$1$1.setProducer(OperatorSubscribeOn.java:76) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.Subscriber.setProducer(Subscriber.java:205) 06-28 13:32:07.722 30243-30322/ W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:152) 06-28 13:32:07.722 30243-30322/ W/System.err: at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:138) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.Observable$2.call(Observable.java:162) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.Observable$2.call(Observable.java:154) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.Observable.unsafeSubscribe(Observable.java:8314) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94) 06-28 13:32:07.722 30243-30322/ W/System.err: at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) 06-28 13:32:07.722 30243-30322/ W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 06-28 13:32:07.722 30243-30322/ W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 06-28 13:32:07.722 30243-30322/ W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 06-28 13:32:07.722 30243-30322/ W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 06-28 13:32:07.723 30243-30322/ W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 06-28 13:32:07.723 30243-30322/ W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 06-28 13:32:07.723 30243-30322/ W/System.err: at java.lang.Thread.run(Thread.java:818) 06-28 13:32:07.723 30243-30322/ W/System.err: Caused by: android.system.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer)
you can like this