Я использую OKHTTP 4.10.0 для отправки запросов из моего приложения Android на серверную часть.
Проблема возникает, когда я добавляю к своему запросу файл размером 92 МБ. Когда я добавляю этот файл, OKHTTP требуется около 1 минуты для отправки запроса на мой сервер.
Под «отправить запрос» я имею в виду время, которое проходит между запуском client.newCall(request).execute()< /code> и фактически отправляет запрос.
Кто-нибудь уже сталкивался или знает, почему отправка запроса занимает так много времени?
P.S. Я приложил адаптированный код, аналогичный тому, который использую, но я действительно думаю, что это как-то связано с внутренним кэшированием или сжатием.
HttpUrl httpUrl = new HttpUrl.Builder()
.scheme(BackendEndpointConstants.PROTOCOL)
.host(BackendEndpointConstants.HOST)
.port(Integer.valueOf(BackendEndpointConstants.PORT))
.addPathSegment(BackendEndpointConstants.BASE_ENDPOINT)
.addPathSegment(BackendEndpointConstants.BASE_ENDPOINT_VERSION)
.addPathSegment(BackendEndpointConstants.ATTACHMENTS)
.build();
MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder();
multipartBodyBuilder.addFormDataPart("fileDescription", JSONUtils.toString(uploadFileDescriptor));
File fileAttachment = basePath.resolve(fileAtachmentDTO.getPathToFile()).toFile();
multipartBodyBuilder.setType(MultipartBody.FORM);
multipartBodyBuilder.addFormDataPart("files[]", fileAttachment.getName(), RequestBody.create(fileAttachment, MediaType.parse(fileAttachmentDTO.getMimeType())));
MultipartBody multipartBody = multipartBodyBuilder.build();
Request request = new Request.Builder()
.addHeader("Authorization", "Bearer " + userApiToken)
.url(httpUrl)
.post(multipartBody)
.build();
OkHttpClient client = new OkHttpClient.Builder().writeTimeout(10, TimeUnit.MINUTES).readTimeout(1, TimeUnit.MINUTES).build();
try (okhttp3.Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
} catch (IOException e) {
Log.e(TAG, "Error", e);
throw new RuntimeException(e);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... attachment
OKHTTP слишком долго отправляет запрос с «вложением» размером 92 МБ. ⇐ JAVA
Программисты JAVA общаются здесь
1736258812
Anonymous
Я использую OKHTTP 4.10.0 для отправки запросов из моего приложения Android на серверную часть.
Проблема возникает, когда я добавляю к своему запросу файл размером 92 МБ. Когда я добавляю этот файл, OKHTTP требуется около 1 минуты для отправки запроса на мой сервер.
Под «отправить запрос» я имею в виду время, которое проходит между запуском client.newCall(request).execute()< /code> и фактически отправляет запрос.
Кто-нибудь уже сталкивался или знает, почему отправка запроса занимает так много времени?
P.S. Я приложил адаптированный код, аналогичный тому, который использую, но я действительно думаю, что это как-то связано с внутренним кэшированием или сжатием.
HttpUrl httpUrl = new HttpUrl.Builder()
.scheme(BackendEndpointConstants.PROTOCOL)
.host(BackendEndpointConstants.HOST)
.port(Integer.valueOf(BackendEndpointConstants.PORT))
.addPathSegment(BackendEndpointConstants.BASE_ENDPOINT)
.addPathSegment(BackendEndpointConstants.BASE_ENDPOINT_VERSION)
.addPathSegment(BackendEndpointConstants.ATTACHMENTS)
.build();
MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder();
multipartBodyBuilder.addFormDataPart("fileDescription", JSONUtils.toString(uploadFileDescriptor));
File fileAttachment = basePath.resolve(fileAtachmentDTO.getPathToFile()).toFile();
multipartBodyBuilder.setType(MultipartBody.FORM);
multipartBodyBuilder.addFormDataPart("files[]", fileAttachment.getName(), RequestBody.create(fileAttachment, MediaType.parse(fileAttachmentDTO.getMimeType())));
MultipartBody multipartBody = multipartBodyBuilder.build();
Request request = new Request.Builder()
.addHeader("Authorization", "Bearer " + userApiToken)
.url(httpUrl)
.post(multipartBody)
.build();
OkHttpClient client = new OkHttpClient.Builder().writeTimeout(10, TimeUnit.MINUTES).readTimeout(1, TimeUnit.MINUTES).build();
try (okhttp3.Response response = client.newCall(request).execute()) {
String responseBody = response.body().string();
} catch (IOException e) {
Log.e(TAG, "Error", e);
throw new RuntimeException(e);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79333933/okhttp-taking-too-long-to-send-a-request-with-a-92mb-attachment[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия