java如何解析Play 2.3中WebService调用的响应。十、
背景:我正在从Play controller
调用后端Web服务,并将Response
(JSON格式)发送到play.mvc.Result
包装的AngularJS模块。这种集成可以无缝地工作
问题陈述:现在我想解析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);
}
}));
那么,有没有一种方法可以从play.mvc.Result
中提取Response
体,或者有其他方法可以做到这一点
# 1 楼答案
下面的代码将以同步方式解析来自WebService调用的响应: