La nouvelle URL (...) .openConnection () implique-t-elle nécessairement un POST?
Si je crée un HTTP java.net.URL
et ensuite appeler openConnection()
sur, fait-il nécessairement qu'un HTTP post va arriver? Je sais que openStream()
implique un GET. Si oui, comment procédez-vous pour l'un des autres verbes HTTP sans avoir à travailler avec le raw socket layer?
source d'informationauteur jodonnell
Vous devez vous connecter pour publier un commentaire.
Si vous récupérez les
URLConnection
objet à l'aide deopenConnection()
il n'a pas vraiment commencer à communiquer avec le serveur. Cela ne se produit pas jusqu'à ce que vous obtenez le flux de l'URLConnection()
. Lorsque vous obtenez d'abord la connexion, vous pouvez ajouter/modifier des en-têtes et d'autres propriétés de la connexion avant de les ouvrir.URLConnection du cycle de vie est un peu bizarre. Il n'envoie pas les en-têtes sur le serveur jusqu'à ce que vous avez obtenu l'un des flux. Si vous venez de recevoir le flux d'entrée alors je crois que c'est un GET, envoie les en-têtes, puis vous laisse lire la sortie. Si vous obtenez le flux de sortie alors je crois qu'il l'envoie comme un POSTE, car il suppose que vous serez d'écriture de données (Vous pouvez avoir besoin d'appeler
setDoOutput(true)
pour la sortie de flux de travail). Dès que vous obtenez le flux d'entrée le flux de sortie est fermé et il attend la réponse du serveur.Par exemple, cela devrait faire un POST:
Alors que ce serait faire un GET:
URLConnection
va aussi faire d'autres choses étranges. Si le serveur spécifie une longueur de contenu puisURLConnection
gardera le sous-jacent flux d'entrée ouverte jusqu'à ce qu'il reçoit une quantité de données, même si vous l'avez explicitement fermer. Cela a causé beaucoup de problèmes pour nous, comme il a fait de l'arrêt de notre client bas proprement un peu dur, comme leURLConnection
serait de garder la connexion réseau ouvert. C'est probablement ce qui existe sans doute, même si vous utilisez seulementgetStream()
.Non, il ne fonctionne pas. Mais si le protocole de l'URL HTTP, vous obtiendrez un
HttpURLConnection
comme un objet de retour. Cette classe a unsetRequestMethod
méthode pour spécifier la méthode HTTP à utiliser.Si vous voulez faire plus sophistiqué des choses que vous êtes probablement mieux d'utiliser une bibliothèque comme Jakarta HttpClient.