Curso de dbExpress e DataSnap

Parte XXVI – SOAP e WebServices – Aplicações clientes

Nesta parte do curso, veremos como criar uma aplicação que fará acesso ao Web Service criado na parte anterior.

Ativando o Servidor

Normalmente você vai hospedar seu Web Service em um servidor IIS ou Apache. Em nosso caso, estamos usando um servidor especial de depuração, feito pela Borland, o Web App Debugger. Esse utilitário dispensa o uso de um servidor Web comercial, porém deve ser usado somente para testes e depuração.

Para ativá-lo clique no menu Tools|Web App Debugger. No console do servidor clique no botão Start.

 

image001.png 

Figura. Web App Debugger

Clique no link que aparece no console. No navegador escolha nossa aplicação na lista e aperte Go.

 

image003.png 

Figura. Descrição do serviço

Clique no link WSDL ao lado de ISoma.

 

image005.png 

Figura. WSDL da interface

Copie a URL que aparece na barra de endereços do navegador.

Deixe o Web App Debugger rodando. Agora vamos fazer a aplicação cliente.

Cliente Web Service / Web Service Consumer

Clique em File|New Application. Salve a unit com o nome de “uClienteSOAP.pas” e o projeto com o nome de “ClienteSOAP.dpr”. Dê o nome de “FrmMain” ao formulário e Caption “Web Services - SOAP”. Coloque um botão no formulário, com o Caption “Somar”, e três Edits. Veja a figura:

 

 image007.png

Figura. Aplicação cliente para servidor SOAP

O objetivo agora é clicar no botão e chamar a função Somar do Web Service, trafegando os dados em XML/HTTP até o servidor.

Importando a WSDL

Clique em File|New|Other|Web Services|WSDL Importer.

 

image009.png 

Figura. Importando a WSDL do servidor SOAP

No WSDL Import Wizard cole a URL que você copiou anteriormente.

 

image011.png 

Figura. WSDL Import Wizard

Clique em Next e depois Finish. Salve a unit criada. Observe que o Delphi cria uma interface IInvokable na aplicação cliente baseado nas informações da WSDL. Essa interface é exatamente a mesma que foi definida quando criamos o servidor SOAP.

 

image013.png 

Figura. Interface gerada a partir do documento WSDL

Volte ao formulário principal. Aperte Alt+F11 e escolha a unit ISoma1 na lista. Coloque no formulário um componente HTTPRIO (primeiro componente da paleta WebServices).

 

image015.png 

Figura. HTTPRIO - Remote Invokable Object

Defina sua propriedade WSDLLocation, Service e Port.

 

image017.png 

Figura. Configurando o HTTPRIO

No evento OnClick do botão digite:

 

procedure TFrmMain.Button1Click(Sender: TObject);

var

  Obj : ISoma;

  n1,n2,n3 : single;

begin

  Obj:=(HTTPRIO1 as ISoma);  // Obj:=CoSoma.Create;

  n1:=StrToInt(Edit1.Text);

  n2:=StrToInt(Edit2.Text);

  n3:=Obj.Somar(n1,n2);

  Edit3.text:=FloatToStr(n3);

end;

 

Observe que a única diferença do código do cliente SOAP para o cliente COM é o modo como o objeto é criado.

 

image019.png 

Figura. Soma feita no servidor SOAP

Quando o usuário aperta o botão Somar, os números “3” e “4” são codificados em um pacote SOAP/XML e enviados ao Web Service. O Web Service recebe o nome do método a ser chamado (Somar) e usando RTTI invoca o método de interface apropriado, por meio dos componentes HTTPSoapDispatcher e HTTPSoapPascalInvoker.

 

Leia todos artigos da série