Ejemplos de uso de la biblioteca IBM® SOAP

Puede crearse una instancia del servicio SOAP utilizando la descripción de servicio de un archivo local o remoto. La descripción de servicio puede estar en un formato de archivo .smd o .wsdl. Observe el ejemplo de uso siguiente:

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

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

Debe proporcionar la ubicación de la descripción de servicio como el URL. Una vez analizados los widgets y creadas las instancias, el servicio está listo para su uso. Normalmente, debe empezar con un servicio que proporciona una descripción de servicio como un archivo .wsdl. Puede utilizar el WsdlParser proporcionado para convertirlo al formato .smd. Observe el ejemplo de uso siguiente:

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

Cuando se analiza una descripción de formato WSDL, puede acceder a los resultados utilizando el miembro smdString o smdObject del analizador. Tenga en cuenta los siguientes elementos cuando convierta la descripción de servicio:

Para invocar un método descrito por el servicio, debe conocer el nombre de método y la estructura de los parámetros que espera el método. Por ejemplo, consulte el ejemplo sobre cómo invocar el método ItemLookUp para el servicio Amazon. En primer lugar, cree la lista de parámetros:

		// Supongamos que accessKeyId mantiene el AccessKeyId que necesita Amazon.
var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest");
		amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId);
		amazonServiceParms.setPropertyValue("ItemId",isbn);

Establezca las propiedades necesarias invocando el método setPropertyValue. La variable, isbn, almacena el ISBN que se va a buscar. A continuación, invoque el método de servicio utilizando el miembro service del widget como en el siguiente ejemplo:

	var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)

La llamada devuelve un objeto del tipo dojo.Deferred que contiene el nodo BODY del contenido devuelto. Puede utilizar la manipulación de modelo de objetos de documento (DOM) para acceder al resultado. Consulte el siguiente ejemplo de acceso a los resultados desde los datos devueltos:

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

Requisito de proxy

Debido a las restricciones XMLHttpRequest (XHR) de dominios cruzados, es posible que deba utilizar un proxy para alcanzar los puntos finales de servicio definidos en la descripción de servicio. Debe modificar los puntos finales de servicio para incorporar el proxy. La versión modificada del servicio de precios de la librería Barnes and Noble puede parecerse al siguiente ejemplo:


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

Una vez cambiados los URL de punto final de servicio en el archivo de descripción de servicio, puede que deba realizar una configuración adicional del proxy para enviar las peticiones al servidor externo. Consulte la documentación que se proporciona con el proxy que está utilizando para obtener más información.



Condiciones de uso | Comentarios