Что именно влияет на URLConnection.setDoOutput()?
Там setDoOutput()
в URLConnection
. Согласно документации Я должен
Установите флаг DoOutput в значение true, если вы собираетесь использовать URL-соединение для вывода, false, если нет.
Теперь я столкнулся с именно этой проблемой - среда выполнения Java преобразует запрос в POST
после вызова setDoOutput(true)
и сервера реагирует только на запросы GET
. Я хочу понять, что произойдет, если я удалю этот setDoOutput(true)
из кода.
Что именно это повлияет? Предположим, я установил его в false
- что я могу сделать сейчас и что я не могу сделать сейчас? Смогу ли я выполнить запросы GET
? Что такое "вывод" в контексте этого метода?
Ответы
Ответ 1
Вам нужно установить значение true, если вы хотите отправить (вывести) тело запроса, например, с запросами POST или PUT. С GET вы обычно не отправляете тело, поэтому вам это не нужно.
Отправка тела запроса осуществляется через выходной поток соединения:
conn.getOutputStream().write(someBytes);
Ответ 2
setDoOutput(true)
используется для запросов POST
и PUT
. Если оно false
, то оно используется для запросов GET
.
Ответ 3
Добавление комментария, если у вас длительное соединение, и вы отправляете GET и POST, это то, что я делаю:
if (doGet) { // some boolean
con.setDoOutput(false); // reset any previous setting, if con is long lasting
con.setRequestMethod("GET");
}
else {
con.setDoOutput(true); // reset any previous setting, if con is long lasting
con.setRequestMethod("POST");
}
Чтобы избежать длительного соединения, закройте его каждый раз.
if (doClose) // some boolean
con.setRequestProperty("Connection", "close");
con.connect(); // force connect request
Ответ 4
public void setDoOutput( boolean dooutput )
Он принимает значение в качестве параметра и устанавливает это значение в поле doOutput
для этого URL-соединения с указанным значением.
URL-соединение может использоваться для ввода и/или вывода. Установите флаг DoOutput в значение true, если вы собираетесь использовать URL-соединение для вывода, false, если нет. По умолчанию используется значение false.