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 方法的示例。首先,应构建参数列表:

		// Assume accessKeyId holds the AccessKeyId required by Amazon.
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;
		});

代理要求

由于受到跨域 XMLHttpRequest (XHR) 限制,因此可能需要使用代理才能访问在服务描述中所定义的服务端点。必须修改服务端点以合并该代理。修改之后的 Barnes 和 Noble 价格服务可能与以下示例相似:


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

在服务描述文件中更改服务端点 URL 之后,可能还需要执行其他配置才能使代理将请求转发至外部服务器。请参阅与您正在使用的代理一起提供的文档,以便了解更多信息。



使用条款 | 反馈