我是 ColdFusion 的新手,需要编写代码来使用基于 SOAP 的 Web 服务。
任何使用具有复杂类型的基于 SOAP 的 Web 服务的链接/指针/示例都会有所帮助。
当我在 ColdFusion 中编写使用以下 Web 服务的代码时,我应该如何处理操作名称、输入 msg 和复杂类型?只需要一些指示即可开始。
XSD 类似于:
<!-- S Request -->
<xs:complexType name="SRequestHeader">
+ <xs:sequence>
+ <xs:element name="sID" minOccurs="1" maxOccurs="1"> </xs:element>
+ <xs:element name="orderNumber" minOccurs="1" maxOccurs="1"> </xs:element>
+ <xs:element name="dateCreated" minOccurs="1" maxOccurs="1"> </xs:element>
</xs:complexType>
- <xs:complexType name="SOrderLine">
- <xs:sequence>
- <xs:element name="lineNumber" minOccurs="1" maxOccurs="1"> </xs:element>
- <xs:element name="recordType" minOccurs="1" maxOccurs="1"> </xs:element>
- <xs:element name="dueDate" minOccurs="1" type="xs:dateTime" />
</xs:complexType>
......
WSDL 有:
<WL:portType name="SPortType">
- <WL:operation name="newOrder">
<WL:input message="WL:newOrderRequest" name="newOrderRequest" />
<WL:output> message="W:newOrderResponse" name="newOrderResponse" />
<WL:fault> message="WL:WSException" name="WSException" />
</WL:operation>
我正在使用类似的东西:
<soapenv:Body>
<newOrder>
<soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sor:newOrderRequest>
<sor:SOrderRequest>
<sor:sID>S123</sor:sID> ....
最后...
<cfhttp url="http://xxxx:123/YYY/SService" method="post" timeout="118"
throwonerror="yes">
<cfhttpparam type="header" name="content-type" value="text/xml">
<cfhttpparam type="header" name="SOAPAction" value="">
<cfhttpparam type="header" name="content-length" value="#len(soap)#">
<cfhttpparam type="header" name="charset" value="utf-8">
<cfhttpparam type="xml" name="message" value="#trim(soap)#">
</cfhttp>
在此行上出现500内部服务器错误:
<cfhttpparam type="xml" name="message" value="#trim(soap)#">