0

当我的系统使用 okhttp3 发送 http 请求时,会出现以下问题: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();
    }
}
4

2 回答 2

4

这实际上不是您的代码的问题,而是您将数据发送到的服务器对请求有效负载大小有限制。有关该错误的更多信息,请参阅:HTTP 响应状态代码 413:有效负载太大

如果您可以控制服务器,则可以调整此设置。可以在 此处找到为几个常见服务器(Apache、NGINX、IIS)修复此错误的示例。

如果您无法控制,您可能需要查看您正在使用的服务的 API/文档,以了解其他上传数据的方式。该服务可能只是对该​​特定用例的有效负载大小有严格的限制。

于 2018-12-26T12:52:43.137 回答
0

这不是您的 HTTP 客户端 (okHttp) 定义的限制,而是服务器限制。

基本上,您请求的服务器不接受大型请求正文。我不知道它是否是公共 API,但您应该检查他们的文档以查看您的请求有什么问题,或者如果您确定您的实施正确,您应该联系主机。

于 2018-12-26T12:46:07.887 回答