Delphi usando componente SOAP
Este exemplo pode ser usado tanto em Delphi 6 quanto em Delphi 7. Será demonstrado dois métodos de fazer a chamada ao Web services, uma usando o componente HTTPRIO e fazendo um Typecast e outros usando apenas a Unit que será criada automaticamente.
Crie um novo projeto, adicione dois Tbutton, um Tedits, um TMemo e um HTTPRIO da palheta Webservices.
Importar o WSDL direto do site para conhecer os serviços disponíveis. Utilizando o menu File | New | Other. Na Guia WebServices selecione a opção WSDL Importer.
Uma tela Wizard será aberta solicitando o endereço do WSDL.
Digitar http://www.federalweb.com.br/webservice.asmx?WSDL e clicar em Next.
Será exibido o código gerado. Clicar em Finish e salvar arquivo gerado com o nome de federalweb.pas.
Inserir no final do arquivo federalweb.pas a linha que esta em vermelho caso ela não exista.
initialization
InvRegistry.RegisterInterface(TypeInfo(WebServiceSoap), 'http://www.federalweb.com.br/webservice.asmx/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WebServiceSoap), 'http://www.federalweb.com.br/webservice.asmx/Consultar');
InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceSoap), ioDocument);
end.
Em seu formulário adicione a unit federalweb.pas que acabou de ser criada utilizando o menu File | Use Unit.
Configure no Object Inspector as propriedades do HTTPRIO1 escolhendo as opções na ordem WSDLLocation, Service e Port.
No evento OnClick do Button1 colocar o seguinte código:
procedure TForm1.btnEnviarClick(Sender: TObject);
begin
Memo1.Text := (HTTPRIO1 as WebServiceSoap).Consultar('1',1,Edit1.Text,1,1,1,1);
end;
No evento OnClick do Button2 colocar o seguinte código:
procedure TForm1.Button2Click(Sender: TObject);
var
Servico: WebServiceSoap;
begin
Servico := GetWebServiceSoap;
Memo1.Text := Servico.Consultar('1',1,Edit1.Text,1,1,1,1);
end;