Recentemente tive que "voltar as origens", fazer uma pequena implementação em um projeto com tecnologia ASP 3.0, é isso mesmo, o famoso ASP Clássico com VBScript e companhia... :)
O desafio era consumir um web services criado em .NET (.asmx) a partir de uma página ASP 3.0.
Através de uma pesquisa na internet encontrei muitos exemplos e dicas , contudo, a maioria dos artigos faziam referências a componentes de terceiros para realizar tal operação, este tipo de recurso não me agrada muito , não porque gosto de reinventar a roda, mas por motivo de disponibilização dos mesmos em servidores de terceiros, problemas de registros de componentes e etc...
A escolha foi fazer um código o mais simples possível e poupando o máximo a utilização de tecnologias encapsuladas de terceiros.
Vamos ao exemplo:
Este artigo não pretende ensinar como criar um web service, desta forma , partimos do princípio que o web services já existe... ok?
1o Passo:
Vamos pegar a especificação (wsdl) do serviço, veja a seguir um exemplo:
Eu fiz o seguinte para visualizar o xml: http://www.seuservico.com.br/srv.asmx?wsdl
Note na imagem que é apresentado o exato XML esperado pelo serviço.
Este web service foi feito em .NET (.asmx) , foi utilizada a versão 4.0 .NET Framework .
2o PASSO - Com base no XML , iremos dar início a nossa codificação, veja a seguir:
<%
Dim url_ws, urlws_wsdl
Dim obj_http, retorno
urlws = "http://www.seuservico.com.br/service.asmx" 'endereço do seu serviço
urlws_wsdl = "http://tempuri.org/LogOnASP" 'note na imagem acima no header do xml que consta a entrada SOAPAction , ou seja, copiei fielmente conforma a imagem, note que LogOnASP é à ação ou método do ws.
'abaixo monto o xml conforme a especificação.
xml = "<?xml version =""1.0"" encoding=""UTF-8"" ?>" & vbCrLf
xml = xml & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
xml = xml & "<soap:Body>"
xml = xml & "<LogOnASP xmlns=""http://tempuri.org/"">"
xml = xml & "<key>param1</key>"
xml = xml & "<passwordMaster>param2</passwordMaster>"
xml = xml & "<accountMaster>param3</accountMaster>"
xml = xml & "<codeproduct>param4</codeproduct>"
xml = xml & "<user>param6</user>"
xml = xml & "<password>param7</password>"
xml = xml & " </LogOnASP>"
xml = xml & "</soap:Body>"
xml = xml & "</soap:Envelope>"
'abaixo segue a codificação utilizada para enviar o xml para o serviço.
SET obj_http = Server.CreateObject("Microsoft.XMLHTTP")
obj_http.open "post", urlws, False
obj_http.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
obj_http.setRequestHeader "SOAPAction", urlws_wsdl
obj_http.send xml
retorno = obj_http.responseText
'este código abaixo irá escrever em um arquivo o retorno do serviço.
SET OBJFSO = Server.CreateObject("Scripting.FileSystemObject")
SET ARQ = OBJFSO.CREATETEXTFILE("c:\ret.xml", true)
ARQ.WRITELINE(retorno)
SET OBJFSO = Nothing
DIM OBJFSO, PASTA, ARQ
%>
Espero ter ajudado, contudo, havendo dúvidas por favor sinta-se a vontade para adicionar um comentário neste post.
Em outro artigo irei falar de XML DOM...
Ivaldo de Oliveira é desenvolvedor sênior de softwares