Bem, hoje vou falar um pouco sobre como trabalhar com web services. Como esse assunto é muito longo, vou passar apenas o básico do básico.
1º Passo: Antes de cair de cara neste artigo certifique-se que vc está por dentro dos seguintes assuntos:
.Conceito de Webservices: http://pt.wikipedia.org/wiki/Webservices
.SOAP: http://pt.wikipedia.org/wiki/Soap
.XML: http://pt.wikipedia.org/wiki/Xml
Os conceitos acima são de suma importância, não deixe de estuda-los.
Ok, agora que vc já leu todo material que citei, estamos prontos para entrar no mundo dos web services. Para este exemplo utilizei:
.Turbo Delphi Explorer;
.IIS
Não vou entrar em detalhes de como configurar o IIS, já que isso pode ser encontrado facilmente aqui:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bc0c4729-e892-4871-b8f3-fcbf489f2f09.mspx?mfr=true
Ok, vamos primeiro criar o servidor: Vá em File/New/Other/Webservices e selecione SOAP Server Application
2º Passo:Selecione a opção ISAPI/NSAPI Dynamic Link Library.
Essa é a carinha da nossa aplicação. Geralmente nada é programado nela, tudo dese ser deixado como está.
3º Passo: Ok, agora vamos criar um SOAPDataModule. Vá em File/New/Other/webservices/SOAP Server Data Module
Uma SoapApplication pode ter vários soap data módules. O soapDataModule pode ser entendido como o webservice em si. A quantidade de SOAPDataModule depende de seu projeto.
4ºPasso, Antes de começar a programar salve e faça os seguintes ajustes no código.
Substitua a linha NomeDaUnit = interface(IAppserverSOAP)
por
NomeDaUnit = interface(IAppserver)
e
nomedaClasse = class(TSoapDataModule, NomeDaInterface, IAppServer, IAppServerSOAP)
por
nomedaClasse = class(TSoapDataModule, NomeDaInterface, IAppServer)
Veja a fugura abaixo:
Agora vamos declarar um método chamodo testeWebService. Repare que podemos declarar métodos que serão usados internamente(só será utilizado dentro do web service) e externamente(Utilizado por outros aplicativos).
Para declarar um método externo precisamos utilzar a diretiva stdcall após a declaração do cabeçalho do método e copia-lo para dentro de interface, veja na figura abaixo:
repare que os metodos testeWebservice e getErrorCode são externos, já que tem a diretiva stdcall e foram declaradas na interface.
vamos fazer uma implementeção simples para o método testeWebservice:
result := 'seu web service está funcionando!'; //Melhor que Olá Mundo....
Pronto, nosso web service está pronto.
Agora basta salvar e dar um build. Pegue a dll compilada e jogue no seu servidor. Depois disso acesse-a pela browser:
localhost/
Você verá algo assim:
repare que nossos métodos aparecem logo abaixo. Clique no link WSDL, você vai visualizar um xml, copie o endereço que aparece no browser.
Agora vamos fazer o cliente:
Dê um file/New/VCL Forms Application
Depois dê um FILE/New/Other/WebServices/WSDL Importer
Na tela seguinte, cole o link do WSDL:
Clique em Next. Se tudo ocorrer bem, vc verá a seguinte tela:
Clique em finish. Salve a interface com um nome qqr. Se vc não conseguir importar o wsdl significa:
.Seu Servidor pode não estar funcionando;
.Vc não fez os ajustes corretamente.
Ok, Vá agora para o seu form principal e importe a interface do Webservice:
Ok, compile.
Agora coloque um button na tela e no evento Onclick coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
var
ls_WsMessage: String;
begin
ls_WsMessage := IWebService.GetIUWebService().testeWebService;
try
ShowMessage( ls_WsMessage );
except
raise Exception.Create( 'Erro ao acessar o web service!' );
end;
end;
Resultado:
Espero que este pequeno tutorial ajude. Vou disponibilizar este exemplo em public.box.net/hatsumomo
Logo logo mais artigos.
Pesquise no Blog
Mostrando postagens com marcador Delphi na Web. Mostrar todas as postagens
Mostrando postagens com marcador Delphi na Web. Mostrar todas as postagens
terça-feira, 29 de janeiro de 2008
Trabalhando com Web Services
Postado por
Anônimo
às
22:39
0
comentários
Marcadores: Delphi na Web, Intermediário, tutorial
Assinar:
Postagens (Atom)