我無法繞過調用第三方服務的簡單方法。這裏的WSDL的此方法的塊:如何調用這個webservice方法?
<s:element name="PushRequest">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="LocationCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PushRequestXml" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PassPhrase" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
這是一個示例SOAP 1.1請求,由網絡服務生成:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<PushRequest xmlns="http://xxxx.yyyy.com/">
<LocationCode>string</LocationCode>
<PushRequestXml>string</PushRequestXml>
<PassPhrase>string</PassPhrase>
</PushRequest>
</soap:Body>
</soap:Envelope>
首先,我認爲,這是複雜的類型的一個參數,所以我試過這個:
ws = CreateObject("webservice", serviceURL);
push = {};
push["LocationCode"] = "xxx";
push["PushRequestXml"] = "yyy";
push["PassPhrase"] = "zzz";
responseXML = ws.PushRequest(push);
但是得到了通常的CF響應Web service operation PushRequest with parameters {{PushRequestXml={yyy},LocationCode={xxx},PassPhrase={zzz}}} cannot be found.
。
接下來我想,也許這不是一個複雜的論證(至少它沒有一個XML格式的name
屬性),但三個不同的參數:
ws = CreateObject("webservice", serviceURL);
responseXML = ws.PushRequest(LocationCode = "xxx", PushRequestXml = "yyy", PassPhrase = "zzz");
結果是一樣的:Web service operation PushRequest with parameters {PushRequestXml={{PushRequestXml, yyy}},LocationCode={{LocationCode, xxx}},PassPhrase={{PassPhrase, zzz}}} cannot be found.
任何想法如何處理?請告知是否需要更多信息。
我使用ACF9,webservice由ASP.net提供
謝謝。
你試過使用CFBuilder,並將serviceURL粘貼到服務瀏覽器(Show Web Services - > +)中,然後右鍵單擊它以生成正確的createObject()調用? – Henry 2011-06-13 18:12:35
只是猜測,但可能的元素,即'LocationCode,PushRequestXml,..'是數組? @亨利 - 我不使用CFB,但這聽起來很酷! – Leigh 2011-06-13 18:17:30
@亨利感謝您的提示,我沒有CFB(和Windows),但我想我會找到一種方法。 – Sergii 2011-06-13 18:27:03