Exemplos de Uso da Biblioteca IBM® SOAP

É possível instanciar o serviço SOAP utilizando a descrição do serviço de um arquivo local ou remoto. A descrição do serviço pode ser em um formato de arquivo .smd ou .wsdl. Veja o seguinte exemplo de uso:

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

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

Você deve fornecer o local da descrição do serviço como a URL. Depois que os widgets são analisados e instanciados, o serviço está pronto para ser utilizado. Geralmente, deve-se começar com um serviço que forneça uma descrição do serviço como um arquivo .wsdl. É possível utilizar o WsdlParser fornecido para converter em formato .smd. Consulte o seguinte uso de exemplo:

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

Ao analisar uma descrição no formato WSDL, você pode acessar os resultados utilizando o membro smdString ou smdObject do analisador. Considere os seguintes itens ao converter a descrição do serviço:

Para chamar um método descrito pelo serviço, você precisa saber o nome do método e a estrutura dos parâmetros esperados pelo método. Por exemplo, consulte o exemplo de como chamar o método ItemLookUp para o serviço Amazon. Primeiramente, construa a lista de parâmetros:

		// Suponha que accessKeyId mantenha o AccessKeyId exigido pelo Amazon.
		var amazonServiceParms = new dojox.wire.ml.XmlElement("ItemLookUpRequest");
		amazonServiceParms.setPropertyValue("AWSAccessKeyId",accessKeyId);
		amazonServiceParms.setPropertyValue("ItemId",isbn);

Configure as propriedades necessárias chamando o método setPropertyValue. A variável, isbn, armazena o ISBN que deverá ser procurado. Em seguida, chame o serviço utilizando o membro service do widget como o exemplo a seguir:

	var deferred = amazonCommerceService.service.ItemLookup(amazonServiceParms)

A chamada retorna um objeto do tipo dojo.Deferred que contém o nó BODY do conteúdo retornado. É possível utilizar uma manipulação DOM (Document Object Model) simples para acessar o resultado. Consulte o exemplo a seguir para acessar os resultados dos dados retornados:

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

Devido a restrições de XHR (XMLHttpRequest) de domínio cruzado, pode ser necessário utilizar um proxy para alcançar os terminais de serviço definidos na descrição do serviço. Você deve modificar os terminais de serviço para incorporar o proxy. A versão modificada do serviço de preço da Barnes and Noble poderia ser semelhante ao seguinte exemplo:


<nome do aplicativo>/ajaxProxy/www.abundanttech.com/WebServices/bnprice/bnprice.asmx.

Depois de alterar as URLs dos terminais em serviço no arquivo de descrição do serviço, também pode ser necessário desempenhar uma configuração adicional no proxy para redirecionar pedidos para o servidor externo. Consulte a documentação fornecida com o proxy que você está utilizando para obter informações adicionais.



Termos de Uso | Feedback