我需要从我的coldfusion 应用程序中通过HTTP 网络服务调用soap。这涉及到用户提交一个表单(有很多字段),然后代码应该将所有这些信息传递给 web 服务并获得一些响应。所以一直在为此制作原型。
我一直在浏览这个论坛,并且已经看到了很多代码片段,但不知何故,似乎都在 xml 部分中传递了硬编码值,但我需要从变量传递值。当我尝试传递变量等时,代码不会将它们视为变量,而是将其视为文本值。
我的网络服务调用代码是:
<cfsavecontent variable="soap"><?xml version="1.0" encoding="UTF-8"?>
<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"
xmlns="http://localhost:8500/Credit Card Soap Web Service"><!---1 this is the cfc location--->
<!---Optional
<soapenv:Header>
<setInit>1</setInit>
<!--- 2 header param --->
</soapenv:Header>--->
<soapenv:Body>
<authorize soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" >
<!---3 cfc method name --->
<name>#elemName.XmlText#</name>
<address>1010 Pine St</address>
<zip>110001</zip>
<state>MO</state>
<country>USA</country>
<cardtype>Visa</cardtype>
<cardnumber>123123123</cardnumber>
<expiry>10-12-2020</expiry>
<amount>50000</amount>
</authorize>
</soapenv:Body>
</soapenv:Envelope>
</cfsavecontent>
<cfhttp url="http://localhost:8500/Credit Card Soap Web Service/Credit Card Soap Web Service authorization.cfc" method="post">
<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>
<cfdump var="#xmlparse(cfhttp.FileContent)#">
此时的 web 服务只是简单地返回传递给它的值。仍然试图先解决这个问题。
注意代码:
> <name>#elemName.Text#</name>
> <address>1010 Pine St</address>
两行都以相同的方式处理..作为实际值。XmlText 设置为上述值,这不会从变量中选择值。
<cfdump var="#xmlparse(cfhttp.FileContent)#">
这打印:
item XmlText
key XmlText NAME
XmlAttributes struct
xmlns:soapenc http://schemas.xmlsoap.org/soap/encoding/
xsi:type soapenc:string
**value XmlText #elemName.XmlText#**
XmlAttributes struct
xmlns:soapenc http://schemas.xmlsoap.org/soap/encoding/
xsi:type soapenc:string
请让我知道我在这里做错了什么。我是 CF 新手,但我的基础知识仍在改进。
另外我怎样才能将我的编码样式更改为“文档”
如果您需要我提供更多信息,请告诉我。
提前致谢