10
votes

Comment définir des params pour ws.post () dans la lecture 2.1 Java

J'essaie d'effectuer un message avec play.api.libs.ws.ws mais je ne peux pas comprendre Comment définir les paramètres, mon code:

Promise<WS.Response> result = WS.url("http://localhost:9001").post("content");


7 Réponses :


11
votes

Essayez de construire la demande comme ceci: xxx

la méthode url (java.lang.string URL) renvoie un ws.wsrequestholder Référence qui peut être utilisée pour modifier la demande d'origine à l'aide d'appels chaînés sur sequeryparamètre .


2 commentaires

Je pense que sa question, celle que j'ai aussi, c'est ce qui est "contenu"? Dans mon cas, il n'y a pas de contenu et la méthode post (), sans paramètre, n'existe pas


Je l'ai essayé avec .post ("") et cela a fonctionné aussi bien. Je vais devoir l'exécuter avec Wireshark, plus tard, pour déterminer exactement ce qu'il fait de ce "contenu". C'est plus facile que de lire le code, du moins pour moi.



5
votes

hmm je suppose que je devrais vraiment commencer à regarder les importations!

I Utilisé accidentellement importer play.api.libs.ws.ws au lieu d'importer play.libs.ws; Lorsque vous utilisez play.libs.ws toutes les méthodes telles que la poste (chaîne de chaîne) et SetContentType (chaîne de cordes) s'est révélée. C'est comme ça que je l'ai fait: xxx


1 commentaires

Je pense qu'il peut y avoir quelque chose de mal avec votre configuration de votre sms.service.url , pour accepter cette demande sous forme de message, car cette chaîne est passée à la poste ( param1 = foo & param2 = bar ) n'est probablement pas correctement / strictement formaté comme une charge utile postale.



-2
votes

La bonne façon de faire la demande de blocage dans la lecture 2.1 est xxx

je l'ai essayé. Ça marche


1 commentaires

La question est spécifiquement sur la post (), pas obtenir (). La poste nécessite un paramètre, obtenez-vous.




1
votes
WS.url(url)
.setContentType("application/x-www-form-urlencoded")
.post("param1=foo&param2=bar");
This method uses an HTTP POST method to send its form request. As seen from the official documentation of Play, you should had already known of the GET method.这种方式是使用post方式提交表单请求,见于play的官方文档,get方式的你应该已经知道了。

1 commentaires

Il serait pratique si vous remplacez ci-dessus chinois par un anglais couramment utilisé.



1
votes

Vous devez transmettre quelque chose qui peut être converti en JSON sérialisé. Cela fonctionne pour moi:

WS.url("https://www.someurl.com")
  .post(JsObject(Seq("theString" -> JsString(someString))))


0 commentaires

4
votes

La réponse acceptée est fausse, ou du moins trompeur. Le code xxx

affichera la chaîne Contenu à http: // localhost: 9001 /? Param1 = foo & param2 = bar , ce qui est Presque certainement pas ce que l'op voulait. Ce qui est beaucoup plus susceptible de fonctionner est xxx

qui publie le formulaire param1 = foo & param2 = bar à l'URL http: // localhost: 9001 , qui est typiquement ce que le serveur veut.


1 commentaires

@flurdy - Yikes, flèches minces, oui. Désolé!