Retrofit 2.0多部分文件上传发送失败:ETIMEDOUT(连接超时)错误

时间:2016-02-23 08:43:11

标签: android retrofit okhttp retrofit2

我将okhttp客户端的超时时间增加到5分钟:

OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(5, TimeUnit.MINUTES);
client.setReadTimeout(5, TimeUnit.MINUTES);
client.setWriteTimeout(5, TimeUnit.MINUTES);
client.interceptors().add(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request original = chain.request();

        // Customize the request
        Request request = original.newBuilder()
                //.header("Accept", "application/json")
                .header("Authorization", Constants.SERVICE_AUTH_KEY)
                .method(original.method(), original.body())
                .build();

        // Customize or return the response
        return chain.proceed(request);
    }
});

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Constants.SERVICE_URL)
        .client(client)
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .build();

我使用WCF Webservice,我也将超时时间增加到同样的事情。

一切正常,但将文件或图像上传到服务器。

即使在Android和WCF上增加超时后,我仍然在android上遇到错误:

  

java.net.SocketException:sendto failed:ETIMEDOUT(连接定时   出)

这是完整日志

 W/System.err: java.net.SocketException: sendto failed: ETIMEDOUT (Connection timed out)
 W/System.err:     at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:550)
 W/System.err:     at libcore.io.IoBridge.sendto(IoBridge.java:519)
 W/System.err:     at java.net.PlainSocketImpl.write(PlainSocketImpl.java:511)
 W/System.err:     at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
 W/System.err:     at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
 W/System.err:     at okio.Okio$1.write(Okio.java:80)
 W/System.err:     at okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
 W/System.err:     at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
 W/System.err:     at okio.RealBufferedSink.write(RealBufferedSink.java:46)
 W/System.err:     at com.squareup.okhttp.internal.http.HttpConnection$FixedLengthSink.write(HttpConnection.java:302)
 W/System.err:     at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
 W/System.err:     at okio.RealBufferedSink.writeAll(RealBufferedSink.java:104)
 W/System.err:     at com.squareup.okhttp.RequestBody$3.writeTo(RequestBody.java:118)
 W/System.err:     at com.squareup.okhttp.MultipartBuilder$MultipartRequestBody.writeOrCountBytes(MultipartBuilder.java:277)
 W/System.err:     at com.squareup.okhttp.MultipartBuilder$MultipartRequestBody.writeTo(MultipartBuilder.java:297)
 W/System.err:     at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:887)
 W/System.err:     at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:749)
 W/System.err:     at com.squareup.okhttp.Call.getResponse(Call.java:268)
 W/System.err:     at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
 W/System.err:     at com.mbh.mbhportal.network.NewPortalService$1.intercept(NewPortalService.java:59)
 W/System.err:     at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:221)
 W/System.err:     at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
 W/System.err:     at com.squareup.okhttp.Call.execute(Call.java:79)
 W/System.err:     at retrofit.OkHttpCall.execute(OkHttpCall.java:116)
 W/System.err:     at retrofit.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:111)
 W/System.err:     at retrofit.RxJavaCallAdapterFactory$CallOnSubscribe.call(RxJavaCallAdapterFactory.java:88)
 W/System.err:     at rx.Observable$2.call(Observable.java:162)
 W/System.err:     at rx.Observable$2.call(Observable.java:154)
 W/System.err:     at rx.Observable$2.call(Observable.java:162)
 W/System.err:     at rx.Observable$2.call(Observable.java:154)
 W/System.err:     at rx.Observable$2.call(Observable.java:162)
 W/System.err:     at rx.Observable$2.call(Observable.java:154)
 W/System.err:     at rx.Observable.unsafeSubscribe(Observable.java:8098)
 W/System.err:     at rx.internal.operators.OperatorSubscribeOn$1$1.call(OperatorSubscribeOn.java:62)
 W/System.err:     at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
 W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
 W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
 W/System.err:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:153)
 W/System.err:     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
 W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
 W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
 W/System.err:     at java.lang.Thread.run(Thread.java:838)
 W/System.err: Caused by: libcore.io.ErrnoException: sendto failed: ETIMEDOUT (Connection timed out)
 W/System.err:     at libcore.io.Posix.sendtoBytes(Native Method)
 W/System.err:     at libcore.io.Posix.sendto(Posix.java:151)
 W/System.err:     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
 W/System.err:     at libcore.io.IoBridge.sendto(IoBridge.java:517)
 W/System.err:  ... 40 more

ETIMEDOUT 的超时时间是什么??

0 个答案:

没有答案