¿Qué afecta exactamente a URLConnection.setDoOutput ()?

Hay setDoOutput() en URLConnection . De acuerdo con la documentación que debería

Establezca el indicador DoOutput en verdadero si tiene la intención de utilizar la conexión URL para el resultado, falso si no.

Ahora me enfrento exactamente a este problema : el tiempo de ejecución de Java convierte la solicitud en POST una vez que se setDoOutput(true) y el servidor solo responde a las solicitudes GET . Quiero entender qué sucede si setDoOutput(true) ese setDoOutput(true) del código.

¿Qué afectará esto exactamente? Supongamos que lo configuro en false , ¿qué puedo hacer ahora y qué no puedo hacer ahora? ¿ GET realizar solicitudes GET ? ¿Qué es “salida” en el contexto de este método?

Debe establecerlo en verdadero si desea enviar ( salida ) un cuerpo de solicitud, por ejemplo, con solicitudes POST o PUT. Con GET, generalmente no envía un cuerpo, por lo que no lo necesita.

El envío del cuerpo de la solicitud se realiza a través del flujo de salida de la conexión:

 conn.getOutputStream().write(someBytes); 

setDoOutput(true) se usa para POST y PUT . Si es false entonces es para usar las solicitudes GET .

Si agrega un comentario, si tiene una conexión de larga duración y envía tanto GET como POST, esto es lo que hago:

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

Y para evitar que la conexión sea duradera, ciérrela cada vez.

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

Toma un valor como parámetro y establece este valor del campo doOutput para esta URLConnection en el valor especificado.

Se puede usar una conexión URL para entrada y / o salida. Establezca el indicador DoOutput en verdadero si tiene la intención de utilizar la conexión URL para el resultado, falso si no. El valor predeterminado es falso.