【发布时间】:2019-06-06 19:31:47
【问题描述】:
我对建立 HTTP 连接和在 Java 中使用 API 还很陌生,所以我不确定问题出在哪里。当我发送一个 POST 连接请求以便将 JSON 格式的文本字符串发送到另一端时,我收到一个错误以及 400 响应代码。当我查看该代码时,似乎我的连接格式不正确。代码如下,以及错误消息。请帮忙!谢谢!
public void sendToAPI(String urlPass, String param) throws IOException {
URL url = new URL(urlPass);
HttpURLConnection connectionOut = (HttpURLConnection) url.openConnection();
connectionOut.setRequestMethod("POST");
connectionOut.setConnectTimeout(5000);
connectionOut.setReadTimeout(5000);
connectionOut.setRequestProperty("Content-Type", "application/json");
connectionOut.setRequestProperty("Content-Length", Integer.toString(param.length()));
connectionOut.setDoOutput(true);
connectionOut.setDoInput(true);
connectionOut.connect();
DataOutputStream stream = new DataOutputStream(connectionOut.getOutputStream());
stream.writeUTF(param);
stream.flush();
stream.close();
int responsecode = connectionOut.getResponseCode();
if(responsecode != 200) {
System.out.println("Response Code is " + responsecode);
}
BufferedReader in = new BufferedReader(
new InputStreamReader(connectionOut.getInputStream()));
String output;
StringBuffer response = new StringBuffer();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
//printing result from response
System.out.println(response.toString());
}
响应码是 400
线程“main”java.io.IOException 中的异常:服务器返回 HTTP 响应代码:400 for URL:XXX
【问题讨论】:
-
你的网址和参数是什么?
-
url="vautointerview.azurewebsites.net/api" + datasetId.get("datasetId") + "/answer" param="answer=" + Dealers.toString() 它没有显示,但网址格式正确前面有 http://,只是一个简单的字符串。和参数一样,只是一个String,我认为不会触发400响应码。
-
参数是否包含多字节字符?内容长度可能是错误的。