java - java中字符串的LoggingOutInterceptor

标签 java cxf

我有这样的日志记录:

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

捕获肥皂请求和响应。它完美地将输出打印到控制台。但我想将该输出捕获到一个字符串中,以便我可以在程序的其他部分使用它。那么有没有办法将其捕获到字符串而不是控制台?

最佳答案

创建一个扩展 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);
    }
}

消息对象包含您的肥皂消息。您可以按照您想要的任何方式处理它。 因此,在您的代码中,您必须执行以下操作:

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

关于java - java中字符串的LoggingOutInterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321725/

相关文章:

java - Apache Camel CXF 端点空回复

java - 在 wsdl 中自定义导入 xsd : how to get to the rootelement

java - 为什么我的程序不断给我一个 ArrayIndexOutOfBoundsException 即使我没有

java - 比较对象不起作用

java - 在将列表转换为字符串时,在java中获得额外的[

java - 使用泛型列表进行快速排序时索引越界异常

java - 比较循环中的元素。如何最好地避免与自己比较?

java - cxf spring 配置无法加载,缺少 xsd

java - 验证 CXF HttpAsyncClient 对 use.async.http.conduit 上下文属性的使用

spring - 用于 JAXWS 端点的 Apache CXF Spring Java 配置