Что именно делает URLConnection.setDoOutput() влияет?
здесь setDoOutput() на URLConnection. Согласно документация я должен
установите флаг DoOutput в true, если вы собираетесь использовать URL-соединение для вывода, false, если нет.
теперь я стою перед именно эта проблема - среда выполнения Java преобразует запрос в POST после setDoOutput(true) вызывается и сервер отвечает только на GET запросы. Я хочу понять, что произойдет, если я удалить setDoOutput(true) от код.
на что именно это повлияет? Предположим, я установил его в false - что я могу сделать сейчас и что я могу сделать сейчас? Смогу ли я выполнить GET запросы? Что такое "выход" в контексте этого метода?
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