java HttpURLConnection抛出一个响应代码:400用于大型请求的URL

java HttpURLConnection抛出一个响应代码:400用于大型请求的URL,java,json,httpurlconnection,http-status-code-400,Java,Json,Httpurlconnection,Http Status Code 400,我正在尝试使用HttpUrlConnection通过URLConnection发送请求,HttpUrlConnection正在工作,但在使用connection.getInputStream返回响应时抛出响应代码:400。我正在编写的web服务正在发送大型JSON响应。事实上,当我尝试小的请求,因此小的响应程序工作良好。这是一个反应太大的问题 URL obj = new URL(url); HttpURLConnection connection = (HttpURLConnect

我正在尝试使用HttpUrlConnection通过URLConnection发送请求,HttpUrlConnection正在工作,但在使用connection.getInputStream返回响应时抛出响应代码:400。我正在编写的web服务正在发送大型JSON响应。事实上,当我尝试小的请求,因此小的响应程序工作良好。这是一个反应太大的问题

URL obj = new URL(url);



    HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/json");
    connection.setDoOutput(true);
    connection.connect();


    ObjectMapper mapper = new ObjectMapper();
    //building the json request.. tested and works fine
    String json = mapper.writeValueAsString(requestParameters);
    DataOutputStream os = new DataOutputStream(connection.getOutputStream());

    os.writeBytes(json);
    os.flush();
    os.close();
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); //Program throws exception here for large response
    String inputLine;
    StringBuilder response = new StringBuilder();

    while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
    }
    in.close();
    connection.disconnect();
如何改进代码,使其能够从web服务读取大量响应?

您的代码很好。 如果服务器返回400,这意味着它无法处理大型请求,因此主修复必须在服务器代码中完成

如果您想制作一个较短的json,我们可以帮助您向我们展示requestParameters,也许我们可以找到一种方法将json拆分为较短的请求


查看e.stackPrintTrace或connection.getErrorStream也会很有用。

这个答案帮助了我,谢谢。这是服务器端的问题。您确定这是因为响应太大吗?我在谷歌上搜索了400个响应代码,这是一个错误的请求。所以我猜你的大请求可能有一些语法错误,这不是一个有效的json,您可以输出它并测试它是否是一个有效的json。看到这个,我将尝试在connection.getInputStream上引发异常,而不是在我请求server@ChaojunZhong我刚刚验证了json,它是有效的。我的要求没有问题。