java HttpURL 连接抛出响应代码:400 URL 对于大请求

java HttpURLConnection throwing a response code: 400 for URL for large requests

我正在尝试使用 HttpUrlConnection 通过 URLConnection 发送请求,这是有效的,但是在使用 connection.getInputStream() 返回响应时抛出 response code: 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 如果您向我们展示请求参数,我们可以帮助您,也许我们可以找到一种方法将 json 拆分为更短的请求。

看看你的 e.stackPrintTrace() 或 connection.getErrorStream() 也会很有用。