Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Java 从Play Framework controller返回JSON字符串_Java_Json_Ajax_Playframework - Fatal编程技术网

Java 从Play Framework controller返回JSON字符串

Java 从Play Framework controller返回JSON字符串,java,json,ajax,playframework,Java,Json,Ajax,Playframework,我正在从客户端发出一个ajax POST请求。我的Play Framework控制器向跨域服务器发出请求,该服务器返回JSON。然后我想把这个JSON转发给客户端。当我调用Promise.toString()时,似乎收到了一个内存地址。如何将实际的JSON返回到客户端 public static Result addVenue() { final Map<String, String[]> values = request().body().asFormUrlE

我正在从客户端发出一个ajax POST请求。我的Play Framework控制器向跨域服务器发出请求,该服务器返回JSON。然后我想把这个JSON转发给客户端。当我调用
Promise.toString()
时,似乎收到了一个内存地址。如何将实际的JSON返回到客户端

    public static Result addVenue() {

      final Map<String, String[]> values = request().body().asFormUrlEncoded();
      String queryString = values.get("venueName")[0]  + ",+" + values.get("venueAddress")[0] + ",+" + values.get("venueCity")[0] + ",+" + values.get("venueState")[0] + "+" + values.get("venueZip")[0];
      String queryURL = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=" + queryString + "&key=" + "AIzaSyD1xSgKUnEZ_tM7qzcEAeM-SJBxPFhIpaU";
      queryURL = queryURL.replaceAll(" ", "+");

      Promise<JsonNode> jsonPromise = WS.url(queryURL).get().map(
              new Function<WSResponse, JsonNode>() {
                  public JsonNode apply(WSResponse response) {
                      JsonNode json = response.asJson();
                      return json;
                  }
              }
      );

      response().setHeader("Access-Control-Allow-Origin", "*");
      response().setHeader("Allow", "*");
      response().setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
      response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Referer, User-Agent");
      return ok(jsonPromise.toString());
}
公共静态结果addVenue(){
最终映射值=request().body().asFormUrlEncoded();
字符串queryString=values.get(“venueName”)[0]+,+“+values.get(“venueAddress”)[0]+,+“+values.get(“venueCity”)[0]+,+“+values.get(“venueState”)[0]+“+values.get(“venueZip”)[0];
字符串queryURL=”https://maps.googleapis.com/maps/api/place/textsearch/json?query=“+queryString+”&key=“+”AIzaSyD1xSgKUnEZ_tM7qzcEAeM-SJBxPFhIpaU”;
queryURL=queryURL.replaceAll(“,”+”);
Promise jsonPromise=WS.url(queryURL.get().map)(
新函数(){
公共JsonNode应用(WSResponse响应){
JsonNode json=response.asJson();
返回json;
}
}
);
response().setHeader(“访问控制允许原点”、“*”);
response().setHeader(“允许”、“*”);
response().setHeader(“访问控制允许方法”、“POST、GET、PUT、DELETE、OPTIONS”);
response().setHeader(“访问控制允许标头”、“来源、X请求、内容类型、接受、引用、用户代理”);
返回ok(jsonPromise.toString());
}

返回结果承诺:

public static Promise<Result> addVenue() {
    return WS.url(URL).get().map((response) -> {
        return ok(response.asJson());
    });
}
publicstaticpromise addVenue(){
返回WS.url(url).get().map((响应)->{
返回ok(response.asJson());
});
}

我终于能够使用以下代码返回JSON。我的实现与提供的另一个答案略有不同。我会提供它,以防另一个对某些人不起作用

 final Promise<Result> resultPromise = WS.url(queryURL).get().map(
            new Function<WSResponse, Result>() {
                public Result apply(WSResponse response) {
                    Logger.info(response.asJson().toString());
                    return ok(response.asJson().toString());
                }
            }
 );
 return resultPromise;
final Promise resultPromise=WS.url(queryURL.get().map(
新函数(){
公共结果应用(WSResponse响应){
Logger.info(response.asJson().toString());
返回ok(response.asJson().toString());
}
}
);
返回结果promise;

你看过这些文件了吗?答案就在这里@Ryan是的,我是这样做的,但是,文档中提到以子的身份返回请求主体,而不是从外部web服务获得新的响应。只是好奇,为什么是-1?我没有投反对票,但可能是因为答案在文档中。非常感谢。昨晚我终于弄明白了。我的代码有点不同。我将在下面发布它。这与上面相同,但对于Java 7:)请注意,您不需要使用“.toString()”在响应中发送Json