【问题标题】:How to Modify response Result Body in Interceptor Play framework 2.3.8?如何在 Interceptor Play framework 2.3.8 中修改响应结果正文?
【发布时间】:2018-04-19 10:44:50
【问题描述】:
 @Override
public Promise<Result> call(Http.Context ctx) throws java.lang.Throwable {
     Promise<Result> result = this.delegate.call(ctx);
     Http.Response response = ctx.response();
     response.setHeader("Access-Control-Allow-Origin", "*");
     return result.map(r -> {
        play.api.mvc.Result res =  r.toScala();
        final int status = r.toScala().header().status();
        if(status == 200 || status == 201) {
            String responseBody = new String(JavaResultExtractor.getBody(r, 0L));
            final Map<String,String> headers =  JavaResultExtractor.getHeaders(r);
            ResponseHeader responseHeader = res.header();
            return new Result(responseHeader, res.body());
        }
        return r;
     });
}

我想修改拦截器的响应正文?我可以得到结果体。这样我就会修改响应。如何将现有的正文响应和结果覆盖为 Result。

【问题讨论】:

标签: interceptor playframework-2.3


【解决方案1】:

正文内容更新是这样的吗?

 

return result.map(r -> {
                final int status = r.toScala().header().status();
                if(status == 200 || status == 201) {
                    // Can change the body content here
                    Status s = status(status,new String(JavaResultExtractor.getBody(r, 0L)));
                    return s.as(JavaResultExtractor.getHeaders(r).get("Content-Type"));
                }
                return r;
             });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多