当前位置: 首页 > 知识库问答 >
问题:

Apache CXF 3.2如何读取SOAP故障消息

谷梁宏恺
2023-03-14

我试图读取来自CXF拦截器的SOAP错误消息,但我无法提取,我捕获了来自Fidler的响应

以下是菲德勒的回应

--uuid:0674d395-99e7-44d8-966c-1f1d387f4234
Content-Id: <rootpart*0674d395-99e7-44d8-966c-1f1d387f4234@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=UTF-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope" xmlns=""><faultcode>S:Server</faultcode><faultstring>Upload Failed!</faultstring></S:Fault></S:Body></S:Envelope>

--uuid:0674d395-99e7-44d8-966c-1f1d387f4234--

以下是我的代码

向客户端添加了FaultInterceptor

client.getInFaultInterceptors().add(faultInterceptor);

public class FlexFaultResponseInterceptor extends AbstractSoapInterceptor {

    public FlexFaultResponseInterceptor() {
        super(Phase.RECEIVE);
    }

    @Override
    public void handleMessage(SoapMessage message) throws Fault {
        Message InFaultMessage = message.getExchange().getInFaultMessage();
        Message OutFaultMessage = message.getExchange().getOutFaultMessage();
    }
}

共有1个答案

齐永昌
2023-03-14

我通过在InInterceptor中添加以下代码来解决问题

@Override
    public void handleMessage(SoapMessage message) throws Fault {
            CachedOutputStream out = message.getContent(CachedOutputStream.class);
            byte[] originalMessage = IOUtils.toByteArray( out.getInputStream() );
            String fault=new String(originalMessage)
    }
 类似资料:
  • 我正在使用apache CXF(Spring启动)来开发我的肥皂服务器。在这里,我需要在我的肥皂故障拦截器中记录故障消息,就像在任何肥皂客户端中显示的那样(例如:肥皂UI)。我如何在我的故障拦截器中记录相同的输出?现在它只是显示异常详细信息 输入 输出(在肥皂客户端中显示) UserNotfindException是代码中抛出的自定义异常 我的定制拦截器代码

  • 我对SOAP相当陌生,我正在尝试理解SOAP错误处理(在Java中)。我已经读过关于这个话题的书,但仍然有一些概念对我来说还不清楚。 更具体地说,如何使用Eclipse WSDL编辑器处理各种响应代码。我已经使用Eclipse WSDL编辑器创建了我的WSDL,但是我愿意使用另一个工具(如SoapUI)来完成这一任务(处理错误)。 我已经附上了一个简单web服务的图像,它应该接受UserID(请求

  • 目前,这就是我如何捕捉异常并设置有效负载的方法 但是,CXF SOAP组件设置实际响应对象的有效负载。而我想在SOAP错误中发送一个错误对象。我怎么能那样做? 默认异常策略发送带有错误消息的SOAP错误。最初,我的目的只是添加记录器,让缺省错误消息在SOAP错误中运行。我添加了Catch exception策略,但后来发现它不会发送SOAP错误。然后我使用回滚策略发送SOAP错误。但是,使用Mul

  • 我使用camel和cxf组件从Web服务中获取一些数据。在某些情况下,Web服务返回标准的soap:fault。我有下一个步骤: 阅读cxf和camel邮件列表中的类似问题,我理解cxfendpoint应该抛出异常,如果有soap foalt,org.apache.cxf.binding.soap.soapfault类型的异常,但我不能得到它。onException子句的目标是处理soap错误异常

  • 12.8. SOAP 网络服务故障排除 是的,SOAP 网络服务的世界中也不总是欢乐和阳光。 有时候也会有故障。 正如你在本章中看到的,SOAP 牵扯了很多层面。 需要 HTTP 层,SOAP 需要向 HTTP 服务器发送 XML 文档并接收返回的 XML 文档。这样一来,你在 第 11 章 HTTP Web 服务 学到的差错技术在这里都有了用武之地。你可以 import httplib 并设置

  • Cadence是一个容错的有状态代码平台。cadence如何在各种故障情况下处理故障?