Подтвердить что ты не робот

Что именно влияет на URLConnection.setDoOutput()?

Там setDoOutput() в URLConnection. Согласно документации Я должен

Установите флаг DoOutput в значение true, если вы собираетесь использовать URL-соединение для вывода, false, если нет.

Теперь я столкнулся с именно этой проблемой - среда выполнения Java преобразует запрос в POST после вызова setDoOutput(true) и сервера реагирует только на запросы GET. Я хочу понять, что произойдет, если я удалю этот setDoOutput(true) из кода.

Что именно это повлияет? Предположим, я установил его в false - что я могу сделать сейчас и что я не могу сделать сейчас? Смогу ли я выполнить запросы GET? Что такое "вывод" в контексте этого метода?

4b9b3361

Ответ 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.