多个WS调用一个动作,如何在java play框架中处理Promise对象?

时间:2014-09-11 08:45:57

标签: java web-services playframework-2.2

我在PlayFramework2 / Java中开发了一个小服务器,它必须从多个WS(REST / JSON)中检索数据,操纵来自这些WS的数据,然后编写并返回结果。

我知道如何调用一个WS,操纵数据并返回响应。但我不知道如何连续调用多个网络服务,在每次通话之间处理数据并生成汇总答案。

请帮助..提前致谢

1 个答案:

答案 0 :(得分:2)

您可以使用F.Promise.sequence组合两个或多个响应。请尝试以下代码

 public static Promise<Result> selectFeed() {

      F.Promise<WS.Response> response1 = WS.url(<firstUrl>).get();
      F.Promise<WS.Response> response2 = WS.url(<SecondUrl>).get();
      F.Promise<List<WS.Response>> responses = F.Promise.sequence(response1, response2);

     F.Promise<Result> resultPromise= responses.map(new F.Function<List<WS.Response>,Result>()     {

            @Override
            public Result apply(List<WS.Response>  o) throws Throwable {

                //some code;
                String s= o.get(0).asJson().toString();


                String s2 = o.get(1).asJson().toString();
                return ok(s+s2);
            }
        });

    return resultPromise;
   }