我在将Java中的POST请求发送到本地服务器时遇到一些问题。我用Postman测试了这个本地服务器,它确实可以正常工作。可悲的是,当我尝试用Java发送POST请求时,一切正常,并带有200 OK代码,但是体内什么也没有。这是我的代码:
public static void request1() throws MalformedURLException, ProtocolException, IOException {
URL url = new URL("http://192.168.1.200");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Just Some Text");
osw.flush();
osw.close();
os.close(); //don't forget to close the OutputStream
httpCon.connect();
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
}
编辑:我看到你们中有些人说这是重复的,并给了我应该解决的另一个链接。可悲的是,我尝试了该链接中的代码,但无法正常工作。服务器只是说请求没有内容。
答案 0 :(得分:1)
从HttpUrlConnection#getResponseMessage
JavaDoc:
获取HTTP响应消息(如果有)以及 服务器的响应代码。
来自以下响应:
HTTP / 1.0 200 OK
找不到HTTP / 1.0 404
提取字符串“ OK”和“找不到”
分别。如果无法从响应中识别出任何结果(结果是无效的HTTP),则返回null。
如果需要响应正文,则需要从HttpUrlConnection
InputStream
中提取出来。
您可以使用HttpUrlConnection#getInputStream
。
答案 1 :(得分:0)
要获取实际的响应正文,您需要阅读该正文,
httpCon.getInputStream()
您可以像这样用一个衬里读取字符串中的数据,
String responseBody = new BufferedReader(new InputStreamReader(httpCon.getInputStream())).lines().collect(
Collectors.joining("\n"));
System.out.println(responseBody);