Desenvolvimento - ASP

Consumindo Web Services com ASP 3.0

Este artigo mostra uma maneira mais simples de se consumir Web Services feitos em .NET com ASP 3.0.

por Cristian Fernandes



Este artigo nos mostra uma maneira bem simples e eficiente de consumir web services desenvolvidos em .NET utilizando o “bom e velho” ASP 3.0, com o objetivo de integrar as duas plataformas evitando desta maneira causar muito impacto em um possível processo de migração.

Web Service

Como o foco deste artigo não é o desenvolvimento de web services, iremos utilizar um exemplo extremamente simples excrito em C#(você pode usar a linguagem de sua preferência)) que apenas retorna um texto de acordo com um parâmtro passado..

Código do Web Service.

namespace WSTESTE

{

public class TESTE: System.Web.Services.WebService

{

[WebMethod]

public string RetornaMsg(string strNome)

{

if (strNome == "Cristian")

{

return "CONSUMINDO WEB SERVICES COM ASP 3.0!!";

}

else

{

return "Hello World!!";

}

}

}

}

Página ASP e SOAP Toolkit

A página .asp também é bem simples, o detalhe importantíssimo neste arquivo é a chamada do objeto “MSSOAP.SoapClient”, ele é responsável por consumir os web services utilizando o protocolo SOAP.

Este objeto é parte integrante do SOAP Toolkit 3.0, que pode ser baixado gratuitamente do site http://msdn.microsoft.com/soap. Ele roda sobre Win 32 (Windows98/98/ME/2000/XP e NT4) e NÃO necessita que o .NET Framework esteja instalado na máquina.

Obs: O SOAP Toolkit também pode ser baixado diretamente deste link:

http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang=en

O SOAP Toolkit trás diversos componentes COM para facilitar tanto a criação como a chamada de web services, neste artigo abordaremos somente a chamada.

Código ASP:

<%

‘Declara as variáveis utilizadas no exemplo

Dim objSoapClient : objSoapClient = NULL

Dim strMsg : strMsg = NULL

‘Verifica se houve post com algum valor digitado

If (Request.Form("txtNome") > "") Then

‘Instancia o objeto

Set objSoapClient = Server.CreateObject("MSSOAP.SoapClient")

‘Diz que é um HTTP Request

objSoapClient.ClientProperty("ServerHTTPRequest") = TRUE

‘Chama o Web Service, passando URL, NOME do WS

Call objSoapClient.mssoapinit("http://localhost/web_service/TESTE.asmx?WSDL", "TESTE")

‘Consome chamando o método

strMsg = objSoapClient.RetornaMsg(Request.Form("txtNome"))

‘Mostra o retorno na tela

Response.Write strMsg

End If

%>

<html>

<head>

<title>CONSUMINDO WEB SERVICES COM ASP 3.0</title>

</head>

<body>

<form name="frmTESTE" method="POST" action="default.asp">

<input name="txtNome" type="text" id="txtNome" />

<input type="submit" value="Consumir"/>

</form>

</body>

</html>

Essa função é bem clara e objetiva. A chamada para o MS Soap Init consome o web service chamando pela interrogação do WSDL WebService.

Depois o web method verdadeiro RetornaMsg é chamado passando o texto digitado no input como parâmetro, seu retorno é escrito na tela.

Obs: É necessário um cuidado especial com o tipo de retorno do Web Service para que ele possa ser acessado via ASP sem problemas, evitando que seja retornado tipos não suportados, como um DataSet por exemplo.

Concluindo

Este artigo mostra a maneira mais simples de como fazer uma página ASP 3.0 se comunicar com um WebService .NET. Isto pode ser usado de diversas maneiras, tanto para facilitar a migração do legado para .NET ou para que uma única camada de negócio (Web Service) seja compartilhada por todas as suas aplicações seja em .NET, ASP 3.0, VB6 e etc...

Espero ter contribuído e abraços,

Cristian Fernandes

Cristian Fernandes

Cristian Fernandes - Desenvolvedor de sistemas Web desde 2003 utilizando ASP e .NET, trabalha também com dispositivos móveis(Pocket PC e PALM) desde 2005 com C, C++ e C#.
Graduando em Ciência da Computação pela UNISINOS-RS.
Atualmente trabalha como desenvolvedor na empresa Pmweb de Porto Alegre.