【问题标题】:play framework- how to send post request using java code in play frameworkplay framework-如何在 play framework 中使用 java 代码发送 post 请求
【发布时间】:2014-09-14 19:12:20
【问题描述】:

目前我正在切换到游戏框架进行开发,但我对这个美妙的框架是新手。 我只想向远程服务器发送一个发布请求并获得响应。

如果我使用 Jersey,那就很简单了,就像这样:

WebResource resource = client.resource("http://myfirstUrl");
 resource.addFilter(new LoggingFilter());
 Form form = new Form();
 form.add("grant_type", "authorization_code");
 form.add("client_id", "myclientId");
 form.add("client_secret", "mysecret");
 form.add("code", "mycode");
 form.add("redirect_uri", "http://mysecondUrl");       
 String msg = resource.accept(MediaType.APPLICATION_JSON).post(String.class, form);

然后我可以得到我想要的味精。

但在 Play 框架中,我找不到任何库来发送此类发布请求。我相信这应该是一个非常简单的功能,Play 应该已经集成了它。我尝试搜索并发现大多数用例都是关于视图级别的表单。谁能给我一些帮助或例子?提前致谢!

【问题讨论】:

  • 您应该查看 play 中的 zentasks 示例:playframework.com/documentation/2.1.1/JavaGuide1。您下载的播放框架应该包含此示例的源代码。它包括多项功能,包括表单处理。
  • 嗨,Tom,我刚刚浏览了 zentask 示例源代码,不幸的是,我没有找到任何类似的用例在 java 代码中发送 post 请求。不知道要不要整合Jersey来玩才能实现这么小的功能……

标签: java playframework


【解决方案1】:

您可以使用 Play WS API 在 Play 应用程序中进行异步 HTTP 调用。首先,您应该添加 javaWs 作为依赖项。

libraryDependencies ++= Seq(
  javaWs
)

然后发出 HTTP POST 请求就这么简单;

WS.url("http://myposttarget.com")
 .setContentType("application/x-www-form-urlencoded")
 .post("key1=value1&key2=value2");

post() 和其他 http 方法返回一个 F.Promise<WSResponse> 对象,该对象是从 Play Scala 继承到 Play Java 的。基本上它是异步调用的底层机制。您可以按如下方式处理并获取您的请求结果:

Promise<String> promise = WS.url("http://myposttarget.com")
 .setContentType("application/x-www-form-urlencoded")
 .post("key1=value1&key2=value2")
 .map(
    new Function<WSResponse, String>() {
        public String apply(WSResponse response) {
            String result = response.getBody();
            return result;
        }
    }
);

在我们的例子中,最终获得的promise 对象是String 对象的包装器。你可以得到包装好的String

long timeout = 1000l;// 1 sec might be too many for most cases!
String result = promise.get(timeout);

timeout 是等待该异步请求被视为失败的等待时间。

如需更详细的解释和更高级的用例,请查看文档和 javadocs。

https://www.playframework.com/documentation/2.3.x/JavaWS

https://www.playframework.com/documentation/2.3.x/api/java/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2020-07-29
    相关资源
    最近更新 更多