2017-04-05 88 views
1

我們正在使用Argus WS,並且我一直在研究如何使用GetUpdatedPricesInDateTimeRange方法。在Coldfusion中使用返回複雜對象的webservice

它返回一個複雜的對象類型,我無法訪問返回的對象中的元素結構。

獲取錯誤

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

web服務被調用如下:

<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返回變量 CFdump

編輯2:基於利的建議,這是爲我工作。

XML

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

的XML在它有命名空間,因此XML搜尋工作如下:

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

是否調用返回名爲returnvariable變量?如果是這樣,你可以傾倒它嗎? –

+0

@DanBracuk:添加了cfdump。 –

+0

這是一個SOAP-webservice的權利?你有沒有嘗試用例如。 soapUI的? –

回答

2

基於Leigh的評論,該returnvariableget_any()方法可以用來獲得底層的XML。

轉儲的get_any()返回消息元素數組。

MessageElement

getAsString()get_any()返回預期的XML字符串的方法。

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

:預期的XML可以是在任一MessageElement的[]數組元素的,而不是在第一個。

注2:XMLSearch與在XML命名空間的工作如下:

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

感謝您發佈分辨率。只是爲了澄清,當你說「任何一個元素」時,你的意思是*所有元素都包含相關的XML - 或者只包含其中的一個? (我不熟悉API)。 – Leigh

+0

@Leigh:返回的對象具有相關的XML,僅在第二個元素中包含數據。第一個元素只有模式定義。對於其他API,這可能會有所不同。 –

+0

謝謝澄清,因爲這絕對不是我所期望的。 – Leigh