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

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()设置请求标头 。 对于HTTP请求,您可以在此处找到所有可能的标头。

writer只是写请求 。 对于带有urlencoded内容的POST ,您通常会将查询字符串写入请求正文,而不是像在GET那样将其附加到请求URI。

也就是说, connection.setDoOutput(true); 在HTTP URI的情况下已经隐式地将请求方法设置为POST (因为它隐式地需要写入请求主体),所以做一个connection.setRequestMethod("POST"); 之后是不必要的。