connection.setRequestProperty и явная запись в urloutputstream они одинаковы? - PullRequest
9 голосов
/ 01 апреля 2010
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 Ответ

12 голосов
/ 02 апреля 2010

Нет, это не так. URLConnection#setRequestProperty() устанавливает запрос заголовок . Для HTTP-запросов вы можете найти все возможные заголовки здесь .

writer просто пишет запрос body . В случае POST с содержимым, кодированным по урлену, вы обычно пишете строку запроса в тело запроса, а не добавляете ее к URI запроса, как в GET.

Тем не менее, connection.setDoOutput(true); уже неявно устанавливает метод запроса на POST в случае HTTP URI (потому что тогда неявно требуется писать в тело запроса), поэтому выполнение connection.setRequestMethod("POST"); впоследствии не требуется.

...