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");
之后是不必要的。