【问题标题】:Retrofit Multipart Image Upload issue retrofit.RetrofitError java.io.InterruptedIOExceptionRetrofit Multipart 图片上传问题 retrofit.RetrofitError java.io.InterruptedIOException
【发布时间】:2015-11-17 12:57:33
【问题描述】:

我正在尝试在改造中通过多部分上传图像。我经常遇到以下异常。

Caused by: retrofit.RetrofitError: timeout
   at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:395)
   at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
   at $Proxy1.uploadImage(Native Method)
   at gaadi.evaluator.com.retrofit.RetrofitRequest.makeImageUploadRequest(RetrofitRequest.java:24)
   at gaadi.evaluator.com.service.RetrofitCarImageUploadService.onHandleIntent(RetrofitCarImageUploadService.java:59)
   ... 4 more



Caused by: java.io.InterruptedIOException: timeout
   at okio.AsyncTimeout.exit(AsyncTimeout.java:258)
   at okio.AsyncTimeout$1.write(AsyncTimeout.java:158)
   at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
   at okio.RealBufferedSink.write(RealBufferedSink.java:46)
   at com.squareup.okhttp.internal.http.HttpConnection$FixedLengthSink.write(HttpConnection.java:302)
   at okio.RealBufferedSink.emitCompleteSegments(RealBufferedSink.java:176)
   at okio.RealBufferedSink$1.write(RealBufferedSink.java:198)
   at java.io.OutputStream.write(OutputStream.java:82)
   at retrofit.mime.TypedByteArray.writeTo(TypedByteArray.java:66)
   at retrofit.client.OkClient$1.writeTo(OkClient.java:88)
   at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:898)
   at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:760)
   at com.squareup.okhttp.Call.getResponse(Call.java:274)
   at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:230)
   at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:201)
   at com.squareup.okhttp.Call.execute(Call.java:81)
   at retrofit.client.OkClient.execute(OkClient.java:53)
   at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
   ... 8 more



Caused by: java.net.SocketException: Socket closed
   at libcore.io.Posix.sendtoBytes(Native Method)
   at libcore.io.Posix.sendto(Posix.java:151)
   at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177)
   at libcore.io.IoBridge.sendto(IoBridge.java:517)
   at java.net.PlainSocketImpl.write(PlainSocketImpl.java:511)
   at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46)
   at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269)
   at okio.Okio$1.write(Okio.java:78)
   at okio.AsyncTimeout$1.write(AsyncTimeout.java:155)

使用的改造库版本:改造:1.9.0 使用的okhttp版本:okhttp:2.4.0

我使用的 REST 改造适配器如下:

final OkHttpClient okHttpClient = new OkHttpClient();
        okHttpClient.setConnectTimeout(30, TimeUnit.SECONDS);
        okHttpClient.setWriteTimeout(30, TimeUnit.SECONDS);
        okHttpClient.setReadTimeout(30, TimeUnit.SECONDS);

        return new RestAdapter.Builder()
                .setEndpoint(urlBase)
                .setLogLevel(RestAdapter.LogLevel.BASIC)
                .setClient(new OkClient(okHttpClient))
                .build();

请求的接口方法如下:

@Multipart
@POST("/{path}")
public ImageUploadResponse uploadImage(@Path("path") String path,       @Part(Constants.EVALUATION_DATA) String map, @Part("certImg") TypedFile file);

对该接口方法的调用如下:

TypedFile file = new TypedFile("multipart/form-data", new File(imagePath));
String url = Utils.getWebServiceURL(UILApplication.getInstance());
return requestInterface.uploadDocumentImage(path, jsonParams, file);

我还尝试将超时值设置为 30 到 60 。它没有帮助!

任何帮助将不胜感激!!!

PS:此代码在 wifi 连接上工作正常,但在 3G 移动数据网络上失败。

【问题讨论】:

  • 如果你从 30 秒到 60 秒呢?您的请求内容是否过大?
  • @kaitian 我也试过了。但是没有用!!
  • 您是否愿意提供您的详细网址和查询,以便我可以在我的机器上进行测试
  • @kaitian 我已经添加了我用来实现这一点的接口方法。我无法在此处发布确切的服务器网址。

标签: android image-uploading retrofit okhttp


【解决方案1】:

这是由于服务器端问题。服务器之前正在重置连接 正在上传的数据/图像。

正如 Jake Wharton 所建议的: https://github.com/square/retrofit/issues/1027

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2017-09-28
    • 2014-06-14
    • 1970-01-01
    • 2017-02-22
    • 2021-08-28
    • 2023-03-10
    相关资源
    最近更新 更多