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;