J'ai quelque chose comme ce qui suit:
final String url = "http://example.com";
final HttpClient httpClient = new HttpClient();
final PostMethod postMethod = new PostMethod(url);
postMethod.addRequestHeader("Content-Type", "application/json");
postMethod.addParameters(new NameValuePair[]{
new NameValuePair("name", "value)
});
httpClient.executeMethod(httpMethod);
postMethod.getResponseBodyAsStream();
postMethod.releaseConnection();
Il revient sans cesse avec un 500. Le fournisseur de services dit que je dois envoyer JSON. Comment cela se fait-il avec Apache HttpClient 3.1+?
NameValuePair
ajoutez simplement un paramètre de requête, vous n'envoyez aucun JSON dans votre code. Quelle structure JSON le service s'attend-il à recevoir, quelles sont vos données à envoyer? Vous recherchezpostMethod.setRequestEntity()
avec unStringRequestEntity
qui contient votre JSON.Réponses:
Apache HttpClient ne sait rien de JSON, vous devrez donc construire votre JSON séparément. Pour ce faire, je vous recommande de consulter la bibliothèque JSON-java simple de json.org . (Si "JSON-java" ne vous convient pas, json.org a une grande liste de bibliothèques disponibles dans différentes langues.)
Une fois que vous avez généré votre JSON, vous pouvez utiliser quelque chose comme le code ci-dessous pour le POSTER
Éditer
Remarque - La réponse ci-dessus, comme demandé dans la question, s'applique à Apache HttpClient 3.1. Cependant, pour aider tous ceux qui recherchent une implémentation contre le dernier client Apache:
la source
parameter
peut être ajoutéPOSTMethod
et en même tempsRequestEntity
lui attribuer un? Je sais que cela semble illogique, mais juste curieux.StringRequestEntity
a été remplacé parStringEntity
.Pour Apache HttpClient 4.5 ou une version plus récente:
Remarque:
1 afin de rendre le code compilé, le
httpclient
package et lehttpcore
package doivent être importés.2 bloc try-catch a été omis.
Référence : guide officiel d'Appache
la source
Comme mentionné dans l'excellente réponse de janoside , vous devez construire la chaîne JSON et la définir comme un fichier
StringEntity
.Pour construire la chaîne JSON, vous pouvez utiliser n'importe quelle bibliothèque ou méthode avec laquelle vous êtes à l'aise. La bibliothèque Jackson est un exemple simple:
la source