Windows Service acessando WebService
Boa tarde pessoal!
Na verdade, este não é um artigo, apenas uma solução de um problema que tivemos e que muitos podem ter…
Temos um Windows Service feito em Delphi/win32 e hoje surgiu a necessidade dele acessar um WebService.
Importamos o wsdl, codificamos e na hora de executar… “access violation“. Bom, pode ser algo que fizemos de errado!
Refizemos o processo e mesmo erro! Vamos fazer um outro cliente pra testar. Fizemos em Delphi Application, PHP, c# e todos funcionaram.
Bom, pode ser algo de permissão do windows. Alteramos para rodar como administrador da máquina, e nada. Num teste a mais, apenas pra ninguém poder dizer que não foi testado, colocamos pra rodar como usuário do domínio e nada!
Então mais um pouco de pesquisa e encontramos a solução:
Faltava chamar a inicialização dos ActiveX (que provavelmente o Delphi usa por baixo pra chamar WebService). Assim sendo, colocamos no create do DataModule que fará o acesso ao WebService a seguinte linha: CoInitialize(nil);
e no Destroy: CoUnInitialize; Pra isso, tivemos que adicionar ActiveX no uses.
Com isso conseguimos resolver o nosso problema e espero que o de alguns de vocês também.
Meus agradecimentos especiais vão para: Leonel Togniolli, Andreano Lanusse e Jone Cunha que encontrou a solução. Valeu pessoal!
Um abraço e até a próxima!