使用Java发送带有正文的发布请求

时间:2018-10-27 19:54:32

标签: java post

我在将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());

}

编辑:我看到你们中有些人说这是重复的,并给了我应该解决的另一个链接。可悲的是,我尝试了该链接中的代码,但无法正常工作。服务器只是说请求没有内容。

2 个答案:

答案 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);