Я пытаюсь отправить файл (230 МБ) на сервер NGinx/1.10.2
.
Сервер настроен на обработку максимум 200 МБ.
Я отправляю такой файл:
@Multipart
@POST("api/test")
Completable test(
@PartMap Map<String, RequestBody> params,
@Part MultipartBody.Part file
);
Мои тайм-ауты для модификации: чтение / запись / подключение - 200 СЕК
Мой журнал:
--> POST https://testserver.com/api/test
Content-Type: multipart/form-data; boundary=4efbe174-e228-4dc7-aeec-d6dbe4ab4302
Content-Length: 230757873
Authorization: Bearer ...
--> END POST
Теперь я ожидаю ошибку с кодом состояния 413. К сожалению, я получаю:
<-- HTTP FAILED: javax.net.ssl.SSLException: Write error: ssl=0x76c8f32400: I/O error during system call, Connection reset by peer
через 30 с.
Если я использую Postman
для отправки этого файла, то он работает как шарм - 413 после нескольких миллисекунд. Так что я не думаю, что это проблема с сервером
Retrofit version: 2.4.0
OkHttp version: 3.10.0
Запрос части:
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));
}