如何从传出拦截器的消息中获取REST服务的响应有效负载?

时间:2014-01-09 11:22:02

标签: java rest cxf interceptor

我在SEND阶段的输出链中编写了一个拦截器,我希望将 REST 服务的响应的有效负载转换为String变量。我怎样才能做到这一点?

这是我的拦截器

public class MyLoginOutInterceptor extends LoggingOutInterceptor {

    public MyLoginOutInterceptor() {
        super(Phase.SEND);
    }

    @Override
    public void handleMessage(Message message) throws Fault {
        OutputStream os = message.getContent(OutputStream.class);
    }
}

当我给OutputStream os = message.getContent(OutputStream.class);添加一个断点时,我看到有效负载在os中,但我不知道如何将它变成一个String。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在responsePayload中你应该拥有你想要的东西。

public void handleMessage(Message message) throws Fault {
       OutputStream os = message.getContent(OutputStream.class);
       StringBuilder responsePayload = new StringBuilder();
       CachedOutputStream cos = (CachedOutputStream) os;
       try {
               cos.writeCacheTo(responsePayload);
       } catch (IOException e) {
               e.printStackTrace();
       }
}