2015-08-24 3 views
1

Я пытаюсь загрузить изображение через мультиплекс в модификации. Я часто получаю следующее исключение.Retrofit Multipart Image Upload issue retrofit.RetrofitError java.io.InterruptedIOException

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); 

Cal l, выполненный по этому способу интерфейса, является следующим:

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: Этот код отлично работает при подключении к Wi-Fi, но не работает в сети мобильной связи 3G.

+0

Что делать, если вы сделаете 30 секунд до 60 секунд? Является ли ваш контент запроса слишком большим? – kaitian521

+0

@kaitian Я тоже это пробовал. Но это не сработало! – lakshay

+0

Вы хотели бы дать свой подробный url и запрос, чтобы я мог проверить его на своей машине. – kaitian521

ответ

0

Это связано с проблемой на стороне сервера. Сервер сбрасывает соединение до данных/изображений, загружаемых.

Как было предложено Jake Wharton: https://github.com/square/retrofit/issues/1027