使用 Web 服务返回 Coldfusion 中的复杂对象

Consume webservice returning Complex objects in Coldfusion

我们正在使用 Argus WS,但我一直在弄清楚如何使用 GetUpdatedPricesInDateTimeRange 方法。

它 return 是一个复杂的对象类型,我无法访问 returned 对象中的元素结构。

获取错误

Element <e.g. element name> is undefined in a Java object of type class org.tempuri.GetUpdatedPricesInDateTimeRangeResponseGetUpdatedPricesInDateTimeRangeResult. 

正在调用 Webservice 如下:

<cfinvoke  
webservice="http://www.argusmedia.com/ArgusWSVSTO/ArgusOnline.asmx?wsdl"
method="GetUpdatedPricesInDateTimeRange" 
returnvariable="PricesResponse"> 
  <cfinvokeargument name="authToken" value="#AuthToken#"/>
  <cfinvokeargument name="fromDateTime" value="2017-03-01"/>
  <cfinvokeargument name="toDateTime" value="2017-03-02"/>
  <cfinvokeargument name="startId" value="0"/>
</cfinvoke> 

任何指点都会很有帮助。

编辑 1:CFDump return 变量

编辑 2:根据 Leigh 的建议,这对我有用。

XML

PricesResponse.get_any()[2].getAsString()

XML 中有名称空间,因此 XML 搜索工作如下:

XmlSearch(XMLDoc,"//*[local-name()='Element_Name']")

根据 Leigh 的评论,returnvariableget_any() 方法可用于获取基础 XML。

get_any()returns 消息元素数组的转储。

getAsString() get_any() returns 预期的 XML 字符串的方法。

<cfdump var="#PricesResponse.get_any()[1].getAsString()#">

注意 :预期的 XML 可以在任一 MessageElement[] 数组元素中,而不是在第一个元素中。

注释 2:XML在 XML 中使用命名空间搜索的工作方式如下:

XmlSearch(XMLDoc,"//*[local-name()='Element_Name']")