L'envoi de la Requête POST HTTP En Java
permet de supposer cette URL...
http://www.example.com/page.php?id=10
(Ici, l'id doit être envoyé dans une requête POST)
Je veux envoyer le id = 10
du serveur page.php
, qui l'accepte dans la méthode POST.
Comment puis-je le faire à partir de Java?
J'ai essayé ceci :
URL aaa = new URL("http://www.example.com/page.php");
URLConnection ccc = aaa.openConnection();
Mais je n'arrive toujours pas à comprendre comment l'envoyer par la POSTE
Vous devez vous connecter pour publier un commentaire.
Mise À Jour De Réponse:
Depuis que, dans certaines classes, dans l'original de la réplique, sont désapprouvées dans la nouvelle version d'Apache HTTP Composants, je suis l'affichage de cette mise à jour.
Par la manière, vous pouvez accéder à la documentation complète pour plus d'exemples ici.
Réponse Originale À Cette Question:
Je recommande d'utiliser Apache HttpClient. son plus rapide et plus facile à mettre en œuvre.
pour plus d'informations, consultez l'url suivante: http://hc.apache.org/
PostMethod
il semble que sa fait maintenant appeléHttpPost
comme par stackoverflow.com/a/9242394/1338936 - pour n'importe qui de trouver cette réponse comme je l'ai fait 🙂L'envoi d'une requête POST est facile de vanille dans Java. En commençant par un
URL
, nous avons besoin de t de les convertir en unURLConnection
à l'aide deurl.openConnection();
. Après cela, nous avons besoin de la convertir en uneHttpURLConnection
, afin que nous puissions accéder à sessetRequestMethod()
méthode pour définir notre méthode. Nous avons finalement dire que nous allons envoyer des données via la connexion.Nous avons ensuite besoin de préciser ce que nous allons envoyer:
L'envoi d'un formulaire simple
Un POSTE normal venant d'un formulaire http a un bien défini format. Nous avons besoin de convertir notre contribution à ce format:
On peut associer à notre formulaire le contenu de la requête http avec les bons en-têtes et de l'envoyer.
Envoi JSON
Nous pouvons aussi envoyer json à l'aide de java, c'est aussi simple:
Rappeler que les différents serveurs d'accepter les différents types de contenu json, voir cette question.
L'envoi de fichiers avec java post
L'envoi de fichiers peut être considérée comme plus difficile à gérer que le format est plus complexe. Nous allons aussi ajouter le support pour l'envoi de fichiers comme une chaîne de caractères, car nous ne voulons pas de la mémoire tampon du fichier à fond dans la mémoire.
Pour cela, on définit des méthodes d'assistance:
Nous pouvons ensuite utiliser ces méthodes pour créer un multi-parties de la requête post comme suit:
out.write(finishBoundaryBytes);
ligne besoin?http.connect();
permettra d'effectuer l'envoi de la POSTE, n'est-ce pas?requests.post('http://httpbin.org/post', data = {'key':'value'})
en Python... je suis nouveau sur Java donc c'est très étrange d'utiliser le mot “facile” pour moi 🙂encode(String)
est obsolète. Vous devez utiliserencode(String, String)
, qui spécifie le type de codage. Exemple:encode(rawData, "UTF-8")
.La première réponse a été grande, mais j'ai dû ajouter un try/catch pour éviter les erreurs du compilateur Java.
Aussi, j'ai eu de la misère à comprendre comment lire les
HttpResponse
avec les bibliothèques Java.Voici le code plus complet :
e.printStackTrace()
ne pas gérer quoi que ce soit.Une manière simple à l'aide d'Apache HTTP Composants est
Prendre un coup d'oeil à la API Fluent
façon la plus simple pour envoyer des paramètres à la requête post:
Que vous avez fait. maintenant, vous pouvez utiliser
responsePOST
.Obtenir le contenu de la réponse comme une chaîne de caractères:
Appel
HttpURLConnection.setRequestMethod("POST")
etHttpURLConnection.setDoOutput(true);
en Fait, seul le dernier est nécessaire que la POSTE, puis devient la méthode par défaut.Je vous conseille d'utiliser http-request construit sur un serveur apache http api.