Я делаю запрос POJ от ajax от клиента. Контроллер My Play Framework делает запрос на междоменный сервер, который возвращает JSON. Затем я хочу отправить этот JSON клиенту. Когда я звоню Promise<JsonNode>.toString()
, Кажется, я получаю адрес памяти. Как я могу вернуть фактический JSON клиенту?Верните строку JSON из контроллера Play Framework
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());
}
Вы прочитали документы? Ответ есть. https://www.playframework.com/documentation/2.3.x/JavaAsync – Ryan
@Ryan да, однако, документация относится к возврату тела запроса в качестве сына, а не к получению нового ответа от внешней веб-службы. –
Просто любопытно, почему это было -1? –