Qu’est-ce que URLConnection.setDoOutput () affecte exactement?

Il y a setDoOutput() dans URLConnection . Selon la documentation je devrais

Définissez l’indicateur DoOutput sur true si vous envisagez d’utiliser la connexion URL pour la sortie, false sinon.

Maintenant, je suis confronté exactement à ce problème – le runtime Java convertit la requête en POST une fois que setDoOutput(true) est appelé et que le serveur ne répond qu’aux requêtes GET . Je veux comprendre ce qui se passe si je retire ce setDoOutput(true) du code.

Qu’est-ce que cela affectera exactement? Supposons que je mette au false – que puis-je faire maintenant et que ne peux-je pas faire maintenant? Serai-je capable d’effectuer des requêtes GET ? Qu’est-ce que “sortie” dans le contexte de cette méthode?

Vous devez le définir sur true si vous souhaitez envoyer ( sortie ) un corps de requête, par exemple avec des requêtes POST ou PUT. Avec GET, vous n’envoyez généralement pas de corps, vous n’en avez donc pas besoin.

L’envoi du corps de la requête se fait via le stream de sortie de la connexion:

 conn.getOutputStream().write(someBytes); 

setDoOutput(true) est utilisé pour les requêtes POST et PUT . S’il est false c’est pour utiliser GET requêtes GET .

En ajoutant un commentaire, si vous avez une connexion durable et que vous envoyez des GET et des POST, voici ce que je fais:

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

Et pour éviter de rendre la connexion durable, fermez-la à chaque fois.

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

Il prend une valeur en tant que paramètre et définit cette valeur du champ doOutput pour cette URLConnection sur la valeur spécifiée.

Une connexion URL peut être utilisée pour l’entrée et / ou la sortie. Définissez l’indicateur DoOutput sur true si vous envisagez d’utiliser la connexion URL pour la sortie, false sinon. Le défaut est faux.