Exemples de syntaxe de la bibliothèque SOAP d'IBM®

Le service SOAP peut être instancié à l'aide de la description de service, à partir d'un fichier local ou distant. Le format de fichier de la description de service peut disposer de l'extension .smd ou .wsdl. Examinez l'exemple de syntaxe suivant :

	
<div dojoType="ibm_soap.widget.SoapService" id="bnpriceService"
	url="./bnpriceGenerated.smd">

<div dojoType="ibm_soap.widget.SoapService" id="amazonCommerceService"
	url="./AWSECommerceService.wsdl">

Vous devez fournir l'emplacement de la description de service en tant qu'adresse URL. Lorsque les widgets sont analysés et instanciés, le service est prêt à être utilisé. En général, il est essentiel de commencer avec un service qui fournit une description de service en tant que fichier .wsdl. Vous pouvez utiliser l'analyseur WsdlParser fourni pour le convertir au format .smd. Examinez l'exemple de syntaxe suivant :

var parser=new ibm_soap.util.WsdlParser();
parser.parse("./serviceDescription.wsdl"); var smdString = parser.smdString;

Lorsque vous analysez une description au format WSDL, vous pouvez utiliser le membre smdString ou smdObject de l'analyseur syntaxique. Tenez compte des détails suivants lors de la conversion de la description de service :

Pour appeler une méthode décrite par le service, vous devez connaître son nom ainsi que la structure de paramètres attendue par la méthode. Vous pouvez vous reporter à l'exemple relatif à l'appel de la méthode ItemLookUp, pour le service Amazon. D'abord, établissez la liste de paramètres :

		// Assume accessKeyId holds the AccessKeyId required by Amazon.
		var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest");
		amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId);
		amazonServiceParms.setPropertyValue("ItemId",isbn);

Définissez les propriétés requises en appelant la méthode setPropertyValue. La variable, isbn, conserve la clé ISBN à rechercher. Appelez ensuite la méthode de service qui utilise le membre du widget service, comme dans l'exemple suivant :

	var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)

Le résultat obtenu est un objet de type dojo.Deferred contenant le noeud BODY du contenu renvoyé. Vous pouvez utiliser une simple manipulation du modèle objet de document (DOM) pour accéder au résultat. Examinez l'exemple suivant pour accéder aux résultats relatifs aux données renvoyées :

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;
		});

Conditions requises pour l'utilisation du serveur proxy

En raison des restrictions relatives aux domaines croisés XHR (XMLHttpRequest), un serveur proxy est nécessaire pour atteindre les noeuds finaux de service, définis dans la description de service. Vous devez modifier les noeuds finaux de service pour intégrer le serveur proxy. La version modifiée du service tarifaire Barnes and Noble peut ressembler à l'exemple suivant :

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

Après avoir modifié les adresses URL au niveau du noeud final de service (dans le fichier de description de service), une configuration supplémentaire est nécessaire pour permettre au serveur proxy de transmettre les demandes au serveur externe. Pour plus d'informations, reportez-vous à la documentation fournie avec le serveur proxy que vous utilisez.



Conditions d'utilisation | Commentaires