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