Chamando Web Services de fora da plataforma NET Por Mauro Sant’Anna santanna mas com br Mauro é um “MSDN Regional Director” www microsoft com rd consultor e instrutor da MAS Informática www
Document Sample


Chamando Web Services de fora da plataforma .NET
Por Mauro Sant’Anna (santanna@mas.com.br). Mauro é um “MSDN Regional
Director” (www.microsoft.com/rd), consultor e instrutor da MAS Informática
(www.mas.com.br), tendo ministrado treinamentos na arquitetura .NET desde outubro de
2000.
Neste artigo veremos como chamar WebServices com o SOAP Toolkit para
Windows 32 usando VBScript, Visual Basic 6.0 e Delphi.
A plataforma Microsoft .NET torna tanto a criação como a chamada de WebServices
coisas muito simples. Eu sinceramente não recomendaria a utilização de nenhuma outra
plataforma para criar WebServices. No entanto, podemos chamar os WebServices de
maneira relativamente simples a partir de diversas plataformas e sistemas operacionais.
Isto é particularmente importante, pois muitas vezes temos o controle do servidor mas
não dos clientes.
Uma plataforma bastante importante é o Windows sem o .NET Framework instalado, a
partir de alguma ferramenta de desenvolvimento “antiga” como por exemplo o Visual
Basic 6 ou Delphi. Para estes casos, a Microsoft criou o SOAP Toolkit.
SOAP Toolkit
O SOAP Toolkit pode ser baixado gratuitamente do site http://msdn.microsoft.com/soap.
Ele roda sob Windows 32 (Windows 98/98/ME/2000/XP e NT4) e NÃO exige que o
.NET Framework esteja instalado no computador. O SOAP Toolkit traz diversos
componentes COM para facilitar tanto a criação como a chamada de WebServices.
Embora o SOAP Toolkit permita a criação de WebServices, estamos interessados apenas
na chamada de WebServices.
Sugiro que você efetue o download e instale o software, usando as opções padrão.
A título de exemplo, acessarei um site que contém diversos WebServices para testes, o
http://www.xmethods.com. Observe na parte inferior da página o link “Delayed Stock
Quote”:
Clique no link e veja a descrição do serviço:
Observe alguns detalhes interessantes:
Embora boa parte dos WebServices listados em XMethods (em
http://www.xmethods.com/ve2/Directory.po) seja implementado na plataforma
Microsoft .NET, este que eu escolhi não é, o que é uma boa demonstração da
capacidade dos WebServices em conectar diferentes plataformas;
A descrição do serviço dá o endereço do arquivo “WSDL” que descreve o
WebService. Iremos precisar desta informação para chamar o serviço.
VBScript
A maneira mais simples de chamar o WebService é usando o objeto
“MSSOAP.SoapClient”, instalado pelo SOAP Toolkit. Veja um exemplo em VBScript
que pega o valor da ação da Microsoft (“MSFT”):
Dim Cotacao
Set Cotacao = CreateObject("MSSOAP.SoapClient")
Call Cotacao.MSSoapInit("http://services.xmethods.net/soap/urn:xmethods-
delayed-quotes.wsdl")
Valor = Cotacao.getQuote("MSFT")
MsgBox Valor
Veja a saída:
O programa acima faz o seguinte:
Cria uma instância do objeto COM “MSSOAPClient”;
Chama o método MSSoapInit passando para ele a URL com o documento XML
que descreve o serviço em linguagem WDSL.
Visual Basic
Em Visual Basic podemos chamar o serviço com código muito semelhante ao anterior
com “late biding”, mas normalmente é preferível carregar a “type library” e chamar o
objeto COM com “early biding”.
Crie um projeto novo em Visual Basic 6 e adicione componentes ao formulário de forma
a ficar semelhante ao projeto a seguir:
Peça “Project | References” para adicionar a type library do SOAP Toolkit:
Selecione “Microsoft SOAP Type Library” e peça Ok. Dê um clique duplo no botão e
entre o código a seguir:
Private Sub Command1_Click()
Dim S As New MSSOAPLib30.SoapClient30
Command1.Enabled = False
S.MSSoapInit ("http://services.xmethods.net/soap/urn:xmethods-delayed-
quotes.wsdl")
List1.AddItem (S.getQuote(Text1.Text))
Command1.Enabled = True
End Sub
Observe que o “early biding” funciona apenas para o próprio componente que chama o
WebService (“MSSOAP.SoapClient”). O WebService em si será sempre chamado
através de “late biding”. Até onde eu sei, não é possível criar uma “type library COM”
automaticamente a partir de um documento WSDL, embora a conversão contrária, de
“type library COM” para WSDL, seja suportada por um utilitário da própria Microsoft
(wsdlgen.exe, incluído no SOAP Toolkit).
Delphi
Assim como no Visual Basic, podemos chamar componentes COM no Delphi através de
“late biding” desde o Delphi 2.0. Veja o código para chamar o WebService do nosso
exemplo.
// Chamada de WebService com Early Biding
// Não se esqueça de colocar "uses ComObj"
procedure TForm1.Button1Click(Sender: TObject);
var
Cotacao: Variant;
Valor: single;
begin
Cotacao := CreateOleObject('MSSOAP.SoapClient');
Cotacao.MSSoapInit('http://services.xmethods.net/soap/urn:xmethods-delayed-
quotes.wsdl');
Valor := Cotacao.getQuote(Edit1.Text);
MessageDlg(FloatToStr(Valor), mtInformation, [mbOk], 0);
end;
Conclusão
O SOAP Toolkit permite chamar WebServices de maneira bem simples a partir de
qualquer ambiente de programação que suporte componentes COM/ActiveX como
VBScript, Visual Basic e Delphi.
Related docs
Get documents about "