okhttp3-413请求实体太大

时间:2018-12-26 12:20:14

标签: java request okhttp okhttp3 http-status-code-413

当我的系统使用okhttp3发送http请求时,会发生以下问题: 413请求实体太大

我想知道如何在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 个答案:

答案 0 :(得分:1)

这实际上不是代码的问题,而是要将数据发送到的服务器对请求有效负载大小有限制。有关该错误的更多信息,请参见:HTTP Response Status Code 413: Payload too large

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

如果您不受控制,则可能需要查看用于其他上传数据方式的服务的API /文档。对于该特定用例,该服务可能仅对有效负载大小有严格限制。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

谢谢大家。 我错了,我找到了解决方案并已在服务器中修复。