349 votes

Java - envoyer facilement des paramètres HTTP via la méthode POST

Je suis avec succès en utilisant ce code pour envoyer des requêtes HTTP avec certains paramètres via la méthode GET

function void sendRequest(String request)
{
    // i.e.: request = "http://example.com/index.php?param1=a&param2=b&param3=c";
    URL url = new URL(request); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
    connection.setDoOutput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("GET"); 
    connection.setRequestProperty("Content-Type", "text/plain"); 
    connection.setRequestProperty("charset", "utf-8");
    connection.connect();
}

Maintenant, j'ai peut-être besoin d'envoyer les paramètres (param1, param2, param3) via la méthode POST, car elles sont très longues. Je pensais ajouter un paramètre supplémentaire à cette méthode (c'est à dire la Chaîne de httpMethod).

Comment puis-je changer le code ci-dessus aussi peu que possible pour être en mesure d'envoyer des paramètres via GET ou POSt?

J'espérais que le fait de changer

connection.setRequestMethod("GET");

pour

connection.setRequestMethod("POST");

aurait fait l'affaire, mais les paramètres sont toujours envoyés via la méthode GET.

A HttpURLConnection obtenu une méthode qui pourrait aider? Est-il utile de Java de construire?

Toute aide serait très appréciée.

Merci,
Dan

500voto

Alan Geleynse Points 11842

Dans une demande GET, les paramètres sont envoyés dans le cadre de l’URL.

Dans une requête POST, les paramètres sont envoyés en tant qu’organe de la demande, après les en-têtes.

Pour faire un POST avec HttpURLConnection, vous devez écrire les paramètres de la connexion après avoir ouvert la connexion.

Copiez le code suivant devrait vous aider à démarrer :

258voto

Boann Points 11904

Voici un exemple simple qui envoie un formulaire puis exporte la page de résultats de `` . Changer l’URL et les paramètres POST selon le cas, bien sûr :

66voto

Craigo Points 601

Je ne pouvais pas exemple d’Alan faire réellement le poste, donc j’ai fini avec cela :

25voto

hgoebl Points 2410

J’ai trouver `` vraiment encombrant à utiliser. Et vous avez à écrire beaucoup de passe-partout, code d’erreur sujettes. J’ai besoin d’un wrapper légère pour mes projets Android et est sorti avec une bibliothèque que vous pouvez utiliser aussi bien : DavidWebb.

L’exemple ci-dessus pourrait être écrit comme ceci :

Vous pouvez trouver une liste d’autres bibliothèques sur le lien fourni.

10voto

Martijn Verburg Points 2213

Je vois certaines autres réponses ont donné l’alternative, je pense personnellement qu’intuitivement vous faites la bonne chose ;). Désolé, à devoxx où plusieurs orateurs ont été maugréer sur ce genre de chose.

C’est pourquoi j’ai personnellement utilise Apache HTTPClient / bibliothèques deHttpCore à faire ce genre de travaillent, j’ai trouver ses API pour être facile à utiliser que la prise en charge HTTP native de Java. YMMV bien sûr !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X