如何在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(或更低版本)有办法做到这一点吗?
答案 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来查找元素并对其进行处理。
见:
请注意,如果要观察网络协议,可能需要特殊配置 - 例如,SSLv3 / TLS。请咨询您的网络管理员,以确定是否需要执行任何ColdFusion配置以支持网络体系结构。还要验证您的端点是否可以通过任何防火墙相互看到。有关更多连接信息,请参阅ColdFusion文档或与您的情况相关的线程,例如: