如何在Play 2.1 Java中为WS.post()设置params

jak*_*kob 9 java playframework-2.1

我正在尝试使用play.api.libs.ws.WS执行帖子,但我无法弄清楚如何设置params,我的代码:

Promise<Response> promise = WS.url(Play.application().configuration()
                .getString("sms.service.url")).post();
Run Code Online (Sandbox Code Playgroud)

.post采取(T body,play.api.http.Writeable wrt,play.api.http.ContentTypeOf ct)但我不明白我应该如何通过那里的params.文档仅说明:

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

如何设置内容,例如.param1 = fooparam2 = bar

Nis*_*hth 10

尝试构建这样的请求:

WS.url("http://localhost:9001")
    .setQueryParameter("param1", "foo")
    .setQueryParameter("param2", "bar")
    .post("content");
Run Code Online (Sandbox Code Playgroud)

该方法url(java.lang.String url)返回一个WS.WSRequestHolder引用,该引用可用于使用链式调用来修改原始请求setQueryParameter.

  • 我认为他的问题,也是我的问题,是什么是"内容"?在我的情况下,没有内容,并且没有参数的方法post()不存在 (7认同)

jak*_*kob 5

嗯,我想我应该开始看进口!

我不小心使用了import play.api.libs.ws.WS而不是import play.libs.WS; 当使用play.libs.WS时,所有方法(如post(String string)和setContentType(String string))都会显示出来.我就这样做了:

import play.Play;
import play.libs.F;
import play.libs.WS;

public static Result wsAction() {
    return async(
        play.libs.WS.url(Play.application().configuration()
            .getString("sms.service.url"))
            .setContentType("application/x-www-form-urlencoded; charset=utf-8")                       
            .post("param1=foo&param2=bar").map(
                new F.Function<WS.Response, Result>() {
                    public Result apply(WS.Response response) {
                       return ok(response.toString());
                    }
                }
            )
        );
    }
Run Code Online (Sandbox Code Playgroud)