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() 也会很有用。
我正在尝试使用 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() 也会很有用。