фона: Я звоню бэкэнд WebServices из Play controller
и отправки Response
(в JSON формате) для AngularJS модуля завернутые в play.mvc.Result
. Эта интеграция работает без проблем.Как разобрать ответ от WebService вызова в Play 2.3.x
Заявление об ошибке: теперь я хочу разобрать Response
и использовать его для какой-либо бизнес-логики; но play.mvc.Result
класс имеет только один метод, который равен toScala()
. Как получить тело play.mvc.Result
. Могу ли я использовать play.libs.F.Promise
, чтобы выполнить свою работу?
Ниже представлен Обобщенный код, который принимает тело запроса JSON и URL-адрес службы как параметр и возвращает play.mvc.Result
.
WSRequestHolder requestHolder = WS.url("https://application.url/ws/endpoint")
.setHeader("Content-Type", "application/json");
final Promise<String> promise = requestHolder.post(jsonRequest)
.map(new Function<WS.Response, String>() {
@Override
public String apply(final Response a) throws Throwable {
//Do i need to Parse from here???
return a.getBody();
}
});
return Results.async(promise.map(new Function<String, Result>() {
@Override
public Result apply(final String a) throws Throwable {
if(STR_UNAUTHORIZED.equals(a)){
return Results.redirect(controllers.routes.Authentication.login("",""));
}
return Results.ok(a);
}
}));
Так есть ли способ, чтобы извлечь тело из Response
play.mvc.Result
или есть альтернативный способ сделать это?