java - connection.setRequestProperty 和明确写入 urloutputstream 是一样的吗?

标签 java urlconnection

URL url = new URL("http://www.example.com/comment");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");

connection.setRequestProperty(key, value);

一样
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("key=" + value);
writer.close();

?

如果不对,请指正。

最佳答案

不,不是。 URLConnection#setRequestProperty() 设置请求 header 。对于 HTTP 请求,您可以找到所有可能的 header here .

writer 只是编写请求body。如果 POST 包含 urlencoded 内容,您通常会将查询字符串写入请求正文,而不是像 GET 那样将其附加到请求 URI。

就是说,在 HTTP URI 的情况下,connection.setDoOutput(true); 已经隐式地将请求方法设置为 POST(因为它隐式需要写入然后请求正文),因此之后执行 connection.setRequestMethod("POST"); 是不必要的。

关于java - connection.setRequestProperty 和明确写入 urloutputstream 是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560150/

相关文章:

java - 在 RecyclerView 内切换小部件可点击

java - 如何从java程序中获取本地硬盘中html文件的执行结果?

java - 如何将 txt 文件从互联网加载到我的 jsf 应用程序中?

java - 使用 Apache POI 读/写

java - 如何在2D平面上投影3D?

java - 元空间是从 native 内存中分配的吗?

java - Gradle 刷新失败

java - 从 REST API get 调用读取 InputStream

android - 如何处理从 3G 切换到 WIFI? UrlConnection TimeOut 不会抛出异常

java - 无法使用 Java 的 URLConnection 获取响应 header 位置