IBM® SOAP 程式庫用法範例

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 格式說明時,您可以利用剖析器的 smdStringsmdObject 成員來存取結果。 當轉換服務說明時,請考量下列項目:

如果要呼叫服務所說明的方法,您必須知道方法名稱,以及方法所預期的參數結構。 如需實例,請參閱如何呼叫 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;
		});

Proxy 需求

由於跨網域 XMLHttpRequest (XHR) 的限制,您可能需要利用 Proxy 來抵達服務說明所定義的服務端點。 您必須修改服務端點來納入 Proxy。 Barnes 和 Noble 價格服務的修正版可能類似下列範例:


<app name>/ajaxProxy/www.abundanttech.com/WebServices/bnprice/bnprice.asmx.

變更服務說明檔中的服務端點 URL 之後,您也可能需要執行其他 Proxy 配置,以便將要求轉遞給外部伺服器。 請參閱您使用的 Proxy 所提供的文件,以取得相關資訊。



使用條款 | 意見