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



здесь setDoOutput() на URLConnection. Согласно документация я должен




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




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



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

1272   4  

4 ответов:

вы должны установить его в true, если вы хотите отправить (выход) тело запроса, например с запросами POST или PUT. С GET вы обычно не отправляете тело, поэтому оно вам не нужно.

отправка самого тела запроса осуществляется через выходной поток соединения:

conn.getOutputStream().write(someBytes);

setDoOutput(true) используется POST и PUT запросы. Если это false тогда это для использования GET запросы.

добавление комментария, если у вас есть длительное соединение, и вы отправляете как GETs, так и POSTs, это то, что я делаю:

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
public void setDoOutput( boolean dooutput )

принимает значение в качестве параметра, и задает значение doOutput поле для этого url-соединения с указанным значением.

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

Comments

    Ничего не найдено.