É 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:
parser.parse("./serviceDescription.wsdl")
// Suponha que a variável wsdlStr detém a descrição WSDL como uma sequência var args = new Object(); args.wsdlStr = wsdlStr parser.parse(args);
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; });
<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.