LoggingOutInterceptor到java中的字符串

时间:2015-05-19 09:30:01

标签: java cxf

我有这样的记录:

org.apache.cxf.endpoint.Client client = ClientProxy.getClient(test);
    client.getInInterceptors().add(new LoggingInInterceptor());
    client.getOutInterceptors().add(new LoggingOutInterceptor()); 

捕获soap请求和响应。它可以完美地输出到控制台。但我想将该输出捕获到一个字符串,以便我可以在程序的其他部分使用它。那么无论如何将其捕获到字符串而不是控制台?

1 个答案:

答案 0 :(得分:2)

创建一个扩展AbstractPhaseInterceptor<Message>的类。你可以用肥皂信息做任何你想做的事。

import javax.xml.bind.JAXBException;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxb.JAXBDataBinding;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;

public class CustomOutInterceptor extends AbstractPhaseInterceptor<Message> {


    @Override
    public void handleMessage(Message message) throws Fault {
        //do something with your message here
    }
    public CustomOutInterceptor() {
        super(Phase.POST_LOGICAL);
    }
}

消息对象包含您的soap消息。您可以以任何方式处理它。 因此,在您的代码中,您必须选择:

org.apache.cxf.endpoint.Client client = ClientProxy.getClient(test);
    client.getOutInterceptors().add(new CustomOutInterceptor());