È possibile creare istanze del servizio SOAP utilizzando la descrizione di servizio proveniente da un file locale o remoto. La descrizione del servizio può avere il formato file .smd o .wsdl. Considerare il seguente esempio di utilizzo:
<div dojoType="ibm_soap.widget.SoapService" id="bnpriceService" url="./bnpriceGenerated.smd">
<div dojoType="ibm_soap.widget.SoapService" id="amazonCommerceService" url="./AWSECommerceService.wsdl">
Occorre fornire il percorso della descrizione di servizio come URL. Dopo avere analizzato e creato istanze dei widget, il servizio è pronto per essere utilizzato. Generalmente, è necessario iniziare con un servizio che fornisca una descrizione di servizio come un file .wsdl. È possibile utilizzare il WsdlParser fornito da convertire in formato .smd. Considerare il seguente esempio di utilizzo:
var parser=new ibm_soap.util.WsdlParser();
parser.parse("./serviceDescription.wsdl"); var smdString = parser.smdString;
Quando si analizza una descrizione in formato WSDL, è possibile accedere ai risultati utilizzando il membro smdString o smdObject del parser. Durante la conversione della descrizione di servizio, considerare i seguenti elementi:
parser.parse("./serviceDescription.wsdl")
// Si supponga che la variabile wsdlStr contiene la descrizione WSDL come stringa var args = new Object(); args.wsdlStr = wsdlStr parser.parse(args);
Per chiamare un metodo descritto dal servizio, è necessario conoscere il nome metodo e la struttura dei parametri previsti dal metodo. Ad esempio, consultare l'esempio relativo alla modalità di richiamo del metodo ItemLookUp per il servizio Amazon. In primo luogo, creare l'elenco di parametri:
// Si supponga che accessKeyId contenga l'AccessKeyId richiesto da Amazon. var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest"); amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId); amazonServiceParms.setPropertyValue("ItemId",isbn);
Impostare le proprietà richieste chiamando il metodo setPropertyValue. La variabile isbn memorizza l'ISBN da ricercare. In seguito richiamare il metodo di servizio utilizzando il membro service del widget, come nel seguente esempio:
var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)
La chiamata restituisce un oggetto di tipo dojo.Deferred che contiene il nodo BODY del contenuto restituito. Per accedere al risultato, è possibile utilizzare la documentazione DOM (Document Object Model) semplice. Consultare il seguente esempio di accesso ai risultati dai dati restituiti:
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.
Dopo avere modificato gli URL dell'endpoint di servizio nel file di descrizione del servizio, potrebbe anche essere necessario eseguire una ulteriore configurazione per consentire al proxy di inoltrare le richieste al server esterno. Per ulteriori informazioni, fare riferimento alla documentazione fornita con il proxy.