okhttp3 - 413 Запрос слишком большой
Когда моя система отправляет http-запрос с использованием okhttp3, возникает следующая проблема: 413 Request Entity Too Large
Я хотел бы знать, как я устанавливаю максимальный размер в запросе okhttp3 или есть ли другое решение для этой проблемы.
public static String post(String url, String json) throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder()
.readTimeout(1, TimeUnit.MINUTES)
.build();
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.header("Authorization", authKey)
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
if(response.code() != 200) {
return "request error";
}
return response.body().string();
}
}
3 ответа
На самом деле это не проблема вашего кода, скорее, сервер, на который вы отправляете данные, имеет ограничение на размер полезной нагрузки запроса. Дополнительные сведения об ошибке см. В разделе " Код ответа HTTP 413: слишком большая полезная нагрузка".
Если вы управляете сервером, вы можете изменить этот параметр. Примеры исправления этой ошибки для пары общих серверов (Apache, NGINX, IIS) можно найти здесь.
Если вы не контролируете ситуацию, вы можете посмотреть API / документацию службы, которую вы используете, чтобы найти другие способы загрузки данных. Служба может просто иметь строгие ограничения на размер полезной нагрузки для этого конкретного варианта использования.
Это не предел, определенный вашим HTTP-клиентом (okHttp), это ограничение сервера.
По сути, запрашиваемый сервер не принимает большие тела запросов. Я не знаю, является ли это общедоступным API или нет, но вы должны проверить их документацию, чтобы увидеть, что не так с вашим запросом, или если вы уверены, что вы правильно реализовали, вам следует связаться с хостом.
Спасибо вам всем. Я был неправ, я нашел решение и исправил на своем сервере.