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
terça-feira, 29 de janeiro de 2008
Trabalhando com Web Services
Postado por
Anônimo
às
22:39
Marcadores: Delphi na Web, Intermediário, tutorial
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário