猿问

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


}

编辑:我看到你们中的一些人说这是重复的,并给了我另一个应该解决的链接。遗憾的是,我尝试了该链接中的代码,但它不起作用。服务器只是说请求没有正文。


HUWWW
浏览 227回答 2
2回答

qq_笑_17

来自HttpUrlConnection#getResponseMessageJavaDoc:获取与响应代码一起从服务器返回的 HTTP 响应消息(如果有)。来自如下响应:HTTP/1.0 200 OKHTTP/1.0 404 Not Found 分别提取字符串“OK”和“Not Found”。如果无法从响应中识别出任何内容(结果不是有效的 HTTP),则返回 null。如果需要响应正文,则需要从HttpUrlConnection InputStream.您可以使用HttpUrlConnection#getInputStream.

ABOUTYOU

要获得实际的响应正文,您需要从中读取它,httpCon.getInputStream()您可以使用这样的单行读取字符串中的数据,String responseBody = new BufferedReader(new InputStreamReader(httpCon.getInputStream())).lines().collect(        Collectors.joining("\n"));System.out.println(responseBody);
随时随地看视频慕课网APP

相关分类

Java
我要回答