需要关于cf中有关肥皂网服务的一件小事的建议

时间:2014-11-04 12:41:45

标签: web-services soap coldfusion

请建议我使用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请求。 请建议正确的方法。

提前致谢

1 个答案:

答案 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中返回一个映射。