What exactly does URLConnection.setDoOutput() affect? What exactly does URLConnection.setDoOutput() affect? java java

What exactly does URLConnection.setDoOutput() affect?


You need to set it to true if you want to send (output) a request body, for example with POST or PUT requests. With GET, you do not usually send a body, so you do not need it.

Sending the request body itself is done via the connection's output stream:

conn.getOutputStream().write(someBytes);


setDoOutput(true) is used for POST and PUT requests. If it is false then it is for using GET requests.


Adding a comment, if you have a long lasting connection and you send both GETs and POSTs, this is what I do:

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");}

And to avoid making the connection long lasting, close it each time.

if (doClose)    // some boolean    con.setRequestProperty("Connection", "close");con.connect();              // force connect request