繁体   English   中英

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

[英]Send post request with body in java

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

}

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

HttpUrlConnection#getResponseMessage JavaDoc:

获取HTTP响应消息(如果有)以及从服务器返回的响应代码。

来自以下响应:
HTTP / 1.0 200 OK
找不到HTTP / 1.0 404

提取字符串“确定”和“未找到”
分别。 如果无法从响应中识别出结果,则返回null(结果是无效的HTTP)。

如果需要响应主体,则需要从HttpUrlConnection InputStream提取它。

您可以使用HttpUrlConnection#getInputStream

要获取实际的响应正文,您需要阅读以下内容,

httpCon.getInputStream()

您可以像这样用一个衬里读取字符串中的数据,

String responseBody = new BufferedReader(new InputStreamReader(httpCon.getInputStream())).lines().collect(
        Collectors.joining("\n"));
System.out.println(responseBody);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM