SOAP 服務可以利用本端或遠端檔案中的服務說明來建立實例。 服務說明可能是 .smd 或 .wsdl 檔案格式。 請參閱下列用法範例:
<div dojoType="ibm_soap.widget.SoapService" id="bnpriceService" url="./bnpriceGenerated.smd">
<div dojoType="ibm_soap.widget.SoapService" id="amazonCommerceService" url="./AWSECommerceService.wsdl">
您必須提供服務說明的位置來作為 URL。 在小組件剖析及實例化之後,服務就已準備好,可供使用。 您通常必須開始於以 .wsdl 檔來提供服務說明的服務。 您可以利用提供的 WsdlParser 來轉換成 .smd 格式。 請參閱下列範例用法:
var parser=new ibm_soap.util.WsdlParser();
parser.parse("./serviceDescription.wsdl"); var smdString = parser.smdString;
當剖析 WSDL 格式說明時,您可以利用剖析器的 smdString 或 smdObject 成員來存取結果。 當轉換服務說明時,請考量下列項目:
parser.parse("./serviceDescription.wsdl")
// 假設 wsdlStr 變數以字串來保存 WSDL 說明 var args = new Object(); args.wsdlStr = wsdlStr parser.parse(args);
如果要呼叫服務所說明的方法,您必須知道方法名稱,以及方法所預期的參數結構。 如需實例,請參閱如何呼叫 Amazon 服務之 ItemLookUp 方法的範例。 首先,請建置參數清單:
// 假設 accessKeyId 存放了 Amazon 所需要的 AccessKeyId。 var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest"); amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId); amazonServiceParms.setPropertyValue("ItemId",isbn);
呼叫 setPropertyValue 方法來設定必要的內容。 isbn 變數用來儲存所搜尋的 ISBN。 之後,依照下列範例,利用小組件的 service 成員來呼叫服務方法:
var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)
這個呼叫會傳回 dojo.Deferred 類型的物件,其中含有傳回之內容的 BODY 節點。 您可以利用簡式「文件物件模型 (DOM)」操作來存取結果。 請參閱下列從傳回的資料存取結果的範例:
deferred.addCallback(function(results){ var title = results.getElementsByTagName("Title")[0].firstChild.nodeValue; var author = results.getElementsByTagName("Author")[0].firstChild.nodeValue; var publisher = results.getElementsByTagName("Manufacturer")[0].firstChild.nodeValue; var resultNode = dojo.byId("details"); resultNode.innerHTML = "<br><b>Title:</b>" + title + "<br><b>Author:</b>" + author + "<br><b>Publisher:</b>" + publisher; });
<app name>/ajaxProxy/www.abundanttech.com/WebServices/bnprice/bnprice.asmx.
變更服務說明檔中的服務端點 URL 之後,您也可能需要執行其他 Proxy 配置,以便將要求轉遞給外部伺服器。 請參閱您使用的 Proxy 所提供的文件,以取得相關資訊。