connection.setRequestProperty并且明确写入urloutputstream是否相同?

时间:2010-04-01 12:06:43

标签: 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();

如果没有,请纠正我。

1 个答案:

答案 0 :(得分:12)

不,不是。 URLConnection#setRequestProperty()设置了一个请求标题。对于HTTP请求,您可以找到所有可能的标头here

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

也就是说,connection.setDoOutput(true);已经隐式地将请求方法设置为POST,以防HTTP URI(因为它隐含地需要写入请求主体),所以做{{1}之后是不必要的。