Curso de dbExpress e DataSnap
Parte XXVI – SOAP e WebServices – Aplicações clientes
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.
Figura. Web App Debugger
Clique no link que aparece no console. No navegador escolha nossa aplicação na lista e aperte Go.
Figura. Descrição do serviço
Clique no link WSDL ao lado de ISoma.
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:
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.
Clique em File|New|Other|Web Services|WSDL Importer.
Figura. Importando a WSDL do servidor SOAP
No WSDL Import Wizard cole a URL que você copiou anteriormente.
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.
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).
Figura. HTTPRIO - Remote Invokable Object
Defina sua propriedade WSDLLocation, Service e Port.
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.
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
- Curso de dbExpress e DataSnap
- Curso de dbExpress e DataSnap - Parte II
- Curso de dbExpress e DataSnap - Parte III
- Curso de dbExpress e DataSnap - Parte IV
- Curso de dbExpress e DataSnap - Parte V
- Curso de dbExpress e DataSnap - Parte VI
- Curso de dbExpress e DataSnap - Parte VII
- Curso de dbExpress e DataSnap - Parte VIII
- Curso de dbExpress e DataSnap - Parte IX
- Curso de dbExpress e DataSnap - Parte X
- Curso de dbExpress e DataSnap - Parte XI
- Curso de dbExpress e DataSnap - Parte XII
- Curso de dbExpress e DataSnap - Parte XIII
- Curso de dbExpress e DataSnap - Parte XIV
- Curso de dbExpress e DataSnap - Parte XV
- Curso de dbExpress e DataSnap - Parte XVI
- Curso de dbExpress e DataSnap - Parte XVII
- Curso de dbExpress e DataSnap - Parte XVIII
- Curso de dbExpress e DataSnap - Parte XIX
- Curso de dbExpress e DataSnap - Parte XX
- Curso de dbExpress e DataSnap - Parte XXI
- Curso de dbExpress e DataSnap - Parte XXII
- Curso de dbExpress e DataSnap - Parte XXIII
- Curso de dbExpress e DataSnap - Parte XXIV
- Curso de dbExpress e DataSnap - Parte XXV
- Curso de dbExpress e DataSnap - Parte XXVI
- Curso de dbExpress e DataSnap - Parte XXVII
- Curso de dbExpress e DataSnap - Parte XXVIII
- Curso de dbExpress e DataSnap - Parte XXIX
- Curso de dbExpress e DataSnap - Parte XXX