0

I'm trying to send a file (230MB) to NGinx/1.10.2 server.

The server is configured to handle max 200MB.

I send a file like this:

@Multipart
@POST("api/test")
Completable test(
        @PartMap Map<String, RequestBody> params,
        @Part MultipartBody.Part file
);

My retrofit timeouts: Read/Write/Connect - 200 SEC

My log:

--> POST https://testserver.com/api/test
Content-Type: multipart/form-data; boundary=4efbe174-e228-4dc7-aeec-d6dbe4ab4302
Content-Length: 230757873
Authorization: Bearer ...
--> END POST

Now I expect error with 413 status code. Unfortunately, I receive:

<-- HTTP FAILED: javax.net.ssl.SSLException: Write error: ssl=0x76c8f32400: I/O error during system call, Connection reset by peer

after 30 sec.

If I use Postman to send this file then it works like charm - 413 after few millis. So I don't think it is server problem

Retrofit version: 2.4.0
OkHttp version: 3.10.0

Request part:

public Completable test(File file) {
    Map<String, RequestBody> map = getInfo();

    RequestBody body = RequestBody.create(MediaType.parse(getMimeType(file.toString())), file);
    MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), body);

    return retrofit.create(Api.class)
            .flatMapCompletable(api -> api.test(map, fileToUpload));
}
Lau
  • 1,804
  • 1
  • 23
  • 49

0 Answers0