Coldfusion SOAP异常错误处理

时间:2014-12-01 11:01:51

标签: exception soap coldfusion

如何在ColdFusion中自定义SOAP错误消息?大多数语言,如PHP,Java,.NET等都具有此功能。虽然我在其他网站上看到过这个问题,但没有一个主题包含答案。如果这是不可能的,我认为Adobe应该添加一个补丁来支持这个功能。

以下是ColdFusion中的SOAP错误示例:

SOAP请求:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>

   </soapenv:Body>
</soapenv:Envelope>

SOAP响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>java.lang.Exception: Body not found.</faultstring>
         <detail>
            <ns1:stackTrace xmlns:ns1="http://xml.apache.org/axis/">java.lang.Exception: Body not found.
                at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:121)
                ...</ns1:stackTrace>
            <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">Coldfusion Error</ns2:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

在其他语言中,您可以自定义错误消息:

SOAP响应:

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>BODY_NOT_FOUND</faultcode>
         <faultstring>Body is missing in your request</faultstring>

      </soapenv:Fault>
   </soapenv:Body>
 </soapenv:Envelope>

但我还没有找到在ColdFusion中实现这一目标的方法。我们计划升级到ColdFusion 11. ColdFusion 11(或更低版本)有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我需要知道应用程序如何生成和接收请求。使用ColdFusion,要创建请求,首先要创建要发送的SOAP数据包:

<cfsavecontent variable = "variable name"> 
    <XML></XML>
</cfsavecontent>

接下来,使用CFHTTP发送您的SOAP请求:

https://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ffc.html

当您的响应返回并且您已将其分配给变量(在CFHTTP请求中设置)时,您可以使用此响应变量来确定如何解析响应。例如,您可以使用XMLParse或XMLSearch来查找元素并对其进行处理。

见:

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-by-category/xml-functions.html

请注意,如果要观察网络协议,可能需要特殊配置 - 例如,SSLv3 / TLS。请咨询您的网络管理员,以确定是否需要执行任何ColdFusion配置以支持网络体系结构。还要验证您的端点是否可以通过任何防火墙相互看到。有关更多连接信息,请参阅ColdFusion文档或与您的情况相关的线程,例如:

Does cfhttp for coldfusion 10 only supports up to TLS 1.0?