Verwendungsbeispiele für die IBM® SOAP-Bibliothek

Mit der Servicebeschreibung in einer lokalen oder fernen Datei können Sie eine Instanz des SOAP-Service erstellen. Die Servicebeschreibung kann im Dateiformat .smd oder .wsdl vorliegen. Sehen Sie sich das folgende Syntaxbeispiel an:

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

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

Die Position der Servicebeschreibung müssen Sie als URL angeben. Nachdem die Fensterobjekte syntaktisch analysiert und instanziiert wurden, ist der Service anwendungsbereit. In der Regel müssen Sie mit einem Service beginnen, dessen Servicebeschreibung als WSDL-Datei vorliegt. Mit dem bereitgestellten WsdlParser können Sie die Beschreibung dann in das SMD-Format konvertieren. Sehen Sie sich die folgende Beispielsyntax an:

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

Wenn Sie eine Beschreibung im WSDL-Format syntaktisch analysiert haben, können Sie mit dem Member smdString oder smdObject des Parsers auf die Ergebnisse zugreifen. Beachten Sie beim Konvertieren der Servicebeschreibung die folgenden Punkte:

Zum Aufrufen der vom Service beschriebenen Methode müssen Sie den Methodennamen kennen und wissen, welche Parameterstruktur die Methode erwartet. Das folgende Beispiel zeigt, wie die Methode ItemLookUp für den Service Amazon aufgerufen wird. Zunächst wird die Parameterliste erstellt.

		// Es wird davon ausgegangen, dass accessKeyId die für Amazon erforderliche AccessKeyId enthält.
var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest");
		amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId);
		amazonServiceParms.setPropertyValue("ItemId",isbn);

Rufen Sie die Methode setPropertyValue auf, um die erforderlichen Eigenschaften festzulegen. In der Variablen isbn ist die ISBN gespeichert, nach der gesucht werden soll. Rufen Sie dann wie im folgenden Beispiel mit dem Member service des Fensterobjekts die Methode service auf:

	var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)

Der Aufruf gibt ein Objekt vom Typ dojo.Deferred zurück, das den BODY-Knoten des zurückgegebenen Inhalts enthält. Mit einer einfachen DOM-Manipulation (Document Object Model) können Sie auf das Ergebnis zugreifen. Sehen Sie sich das folgende Beispiel für den Zugriff auf die Ergebnisse in den zurückgegebenen Daten an:

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 als Erfordernis

Aufgrund der XHR-Beschränkung (XMLHttpRequest) auf eine Domäne können Sie die in der Servicebeschreibung definierten Serviceendpunkte unter Umständen nur über einen Proxy erreichen. Dann müssen Sie die Serviceendpunkte modifizieren und den Proxy integrieren. Die modifizierte Version des Service bnprice (Preisservice von Barns and Noble) könnte wie das folgende Beispiel aussehen:


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

Nach dem Ändern der URLs der Serviceendpunkte in der Datei mit der Servicebeschreibung können weitere Konfigurationsschritte erforderlich sein, damit der Proxy Anforderungen an den externen Server weiterleiten kann. Weitere Informationen hierzu enthält die Dokumentation zu dem von Ihnen verwendeten Proxy.



Nutzungsbedingungen | Feedback