Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个操作中调用多个WS,如何在java play框架中处理Promise对象?_Java_Web Services_Playframework 2.2 - Fatal编程技术网

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

在一个操作中调用多个WS,如何在java play框架中处理Promise对象?,java,web-services,playframework-2.2,Java,Web Services,Playframework 2.2,我在PlayFramework2/Java中开发了一个小型服务器,它必须从多个WS(REST/JSON)检索数据,操作这些WS中的数据,然后编写并返回结果 我知道如何调用一个WS,操作数据并返回响应。但我不知道如何连续调用多个web服务,如何处理每次调用之间的数据,以及如何生成聚合答案 请帮忙。。提前感谢您可以使用F.Promise.sequence组合两个或多个响应。请尝试以下代码 public static Promise<Result> selectFeed() {

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

我知道如何调用一个WS,操作数据并返回响应。但我不知道如何连续调用多个web服务,如何处理每次调用之间的数据,以及如何生成聚合答案


请帮忙。。提前感谢

您可以使用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;
   }
public静态承诺selectFeed(){
F.Promise-response1=WS.url().get();
F.Promise response2=WS.url().get();
F.承诺响应=F.承诺序列(响应1,响应2);
F.Promise-resultPromise=responses.map(新的F.Function(){
@凌驾
公开结果应用(列表o)可丢弃{
//一些代码;
字符串s=o.get(0.asJson().toString();
字符串s2=o.get(1.asJson().toString();
返回ok(s+s2);
}
});
返回结果promise;
}