请建议我使用SOAP
在CF Web服务中获取方法参数的正确方法是什么下面是我没有使用过< cfargument >的网络服务方法示例代码。但解析xml请求
<cffunction name="Method1" displayname="method name" description="method description
"access="remote" output="true" returntype="xml">
<cfset isSOAP = isSOAPRequest()>
<cfif isSOAP>
Get the first header as a string.
<cfset reqxml = GetSOAPRequest()>
<cfset reqxml1 = XmlParse(reqxml)>
<cfset responseNodes = xmlSearch(#reqxml1#,"soapenv:Envelope/soapenv:Body") />
<cfset responseNodes = xmlparse(responseNodes[1]) />
<cfif structKeyExists( responseNodes.xmlroot, "AgentID" )>
<CFSET AgentID=trim(responseNodes.xmlroot.AgentID.xmltext)>
<cfelse>
<cfset process = 0 >
<cfset responce['ErrorCode'] = "MG1000">
<cfset responce['ErrorMessage'] = "Agent ID not found in request">
<cfset AnythingToXML = createObject('component', 'AnythingToXML.AnythingToXML').init() />
<cfset myXML = AnythingToXML.toXML(responce,"StatusResponse") />
<cfset result = xmlparse(myXML)>
<cfreturn result>
</cfif>
但我认为我应该使用 &LT;的 cfargument &GT;代替解析xml请求。 请建议正确的方法。
提前致谢
答案 0 :(得分:1)
您的ColdFusion SOAP方法可以简单如下:
<cffunction name="yourMethod" access="remote" output="false" returntype="struct">
<cfargument name="testString" type="String" >
<cfset local.out = structNew()>
<cfset local.out.argIn = arguments.testString>
<cfset local.out.additionalValue = "Hello World">
<cfreturn local.out>
</cffunction>
ColdFusion将允许通过SOAP请求访问远程功能。您不需要依赖isSOAPRequest()
和GetSOAPRequest()
之类的SOAP方法,除非您执行更复杂的任务,例如需要SOAP标头中的数据。您可以通过将?wsdl附加到组件的名称来查看SOAP wsdl,例如localhost\yourService.cfc?wsdl
您可以返回ColdFusion可以序列化的任何数据类型。在我的例子中,我选择返回一个结构,它将在SOAP中返回一个映射。