[英]How to parse Response from WebService call in Play 2.3.x
背景:我从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
主体,还是有其他方法可以做到这一点?
下面的代码将以同步方式解析来自WebService调用的响应:
WSRequestHolder requestHolder = WS.url("https://application.url/ws/endpoint")
.setHeader("Content-Type", "application/json");
final Promise<WS.Response> promise = requestHolder.get();
Response myResponse=promise.get(50000);
// This code returns the Parsed response in form of String
return myResponse.getBody();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.