Consulta CEP entre outros serviços direto no WebService dos Correios, a partir do Delphi 7 acima.
08/02/2018
0
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Na unit importada, substitua a linha :
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioDocument);
Por:
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioHasAllSOAPActions);
Ou:
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioHasNamespace);
Último detalhe, no indy passado setar a seguinte propriedade como True:
HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True;
Pronto! Está apto a fazer consultas diretas no site da Empresa Brasileira de Correios e Telégrafos;
Exemplo:
procedure TfrmIni.btnConsCepClick(Sender: TObject); var wsAtendeCliente: AtendeCliente; wsConsultaCepReq: consultaCEP; wsConsultaCepResp: consultaCEPResponse; sEndCep: string; begin // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioDocument); // CHANGE TO // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioHasAllSOAPActions); ((( TESTADO OK COM ESSE ))) // OR // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioHasNamespace); try try wsConsultaCepReq := consultaCEP.Create; wsConsultaCepResp := consultaCEPResponse.Create; HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True; wsAtendeCliente := GetAtendeCliente(False, '', HTTPRIO1); wsConsultaCepReq.cep := edtCep.Text; try wsConsultaCepResp := wsAtendeCliente.consultaCEP( wsConsultaCepReq ); except on E: ERemotableException do begin if (UpperCase(Trim(E.message)) = 'CEP NAO ENCONTRADO') or (UpperCase(Trim(E.message)) = 'CEP NAO INFORMADO') then begin Application.MessageBox(PChar(Format('Atenção! Cep %s não informado/encontrado!', [edtCep.Text])), PChar('Mensagem'), MB_OK + MB_ICONINFORMATION); Exit; end else begin raise Exception.Create( E.message ); end; end; end; sEndCep := wsConsultaCepResp.return.cep + #13; sEndCep := sEndCep + wsConsultaCepResp.return.end_ + #13; sEndCep := sEndCep + wsConsultaCepResp.return.complemento + #13; sEndCep := sEndCep + wsConsultaCepResp.return.complemento2 + #13; sEndCep := sEndCep + wsConsultaCepResp.return.bairro + #13; sEndCep := sEndCep + wsConsultaCepResp.return.cidade + #13; sEndCep := sEndCep + wsConsultaCepResp.return.uf + #13; ShowMessage( sEndCep ); finally FreeAndNil(wsConsultaCepReq); FreeAndNil(wsConsultaCepResp); wsAtendeCliente._Release; end except on E: Exception do begin Application.MessageBox(PChar(Format('Atenção! %s%s ', [#13#13, E.message])), PChar('Erro'), MB_OK + MB_ICONERROR); end; end; end;
Att.
Sandro Lemes
Desenvolvedor Delphi
Sandro Lemes
Post mais votado
09/09/2019
Você tem o código fonte para disponibilizar?
na unit que é criada ao fazer o procedimento abaixo existem estas classes, no caso você vai ter que fazer uses da classe que irá ser criada!!!
New >> Other.... Aba WebServices... WSDL Importer... e importe a seguinte URL:
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Sandro, estou tentando utilizar essa consulta de CEP, porém ao pesquisar na unit criada conforme suas instruções, não encontrei as classes consultaCEP e consultaCEPResponse, apenas na classe AtenteCliente possui uma função chamada consultaCEP.
Preciso fazer algo mais para importar essas classes? Além do uses uAtendeCliente1 que é o nome da minha unit, preciso adicionar mais alguma?
Luciano Peçanha
Mais Posts
23/07/2018
Paulo Freire
17/01/2019
Amilton Machado
Você tem o código fonte para disponibilizar?
17/01/2019
Sandro Lemes
Você tem o código fonte para disponibilizar?
na unit que é criada ao fazer o procedimento abaixo existem estas classes, no caso você vai ter que fazer uses da classe que irá ser criada!!!
New >> Other.... Aba WebServices... WSDL Importer... e importe a seguinte URL:
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
17/10/2019
Solange Silva
Delphi 10.3 community.
30/12/2019
Socrates Foschera
https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Na unit importada, substitua a linha :
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioDocument);
Por:
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioHasAllSOAPActions);
Ou:
InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioHasNamespace);
Último detalhe, no indy passado setar a seguinte propriedade como True:
HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True;
Pronto! Está apto a fazer consultas diretas no site da Empresa Brasileira de Correios e Telégrafos;
Exemplo:
procedure TfrmIni.btnConsCepClick(Sender: TObject); var wsAtendeCliente: AtendeCliente; wsConsultaCepReq: consultaCEP; wsConsultaCepResp: consultaCEPResponse; sEndCep: string; begin // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioDocument); // CHANGE TO // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioHasAllSOAPActions); ((( TESTADO OK COM ESSE ))) // OR // InvRegistry.RegisterInvokeOptions(TypeInfo(YourSoapInterface), ioHasNamespace); try try wsConsultaCepReq := consultaCEP.Create; wsConsultaCepResp := consultaCEPResponse.Create; HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True; wsAtendeCliente := GetAtendeCliente(False, '', HTTPRIO1); wsConsultaCepReq.cep := edtCep.Text; try wsConsultaCepResp := wsAtendeCliente.consultaCEP( wsConsultaCepReq ); except on E: ERemotableException do begin if (UpperCase(Trim(E.message)) = 'CEP NAO ENCONTRADO') or (UpperCase(Trim(E.message)) = 'CEP NAO INFORMADO') then begin Application.MessageBox(PChar(Format('Atenção! Cep %s não informado/encontrado!', [edtCep.Text])), PChar('Mensagem'), MB_OK + MB_ICONINFORMATION); Exit; end else begin raise Exception.Create( E.message ); end; end; end; sEndCep := wsConsultaCepResp.return.cep + #13; sEndCep := sEndCep + wsConsultaCepResp.return.end_ + #13; sEndCep := sEndCep + wsConsultaCepResp.return.complemento + #13; sEndCep := sEndCep + wsConsultaCepResp.return.complemento2 + #13; sEndCep := sEndCep + wsConsultaCepResp.return.bairro + #13; sEndCep := sEndCep + wsConsultaCepResp.return.cidade + #13; sEndCep := sEndCep + wsConsultaCepResp.return.uf + #13; ShowMessage( sEndCep ); finally FreeAndNil(wsConsultaCepReq); FreeAndNil(wsConsultaCepResp); wsAtendeCliente._Release; end except on E: Exception do begin Application.MessageBox(PChar(Format('Atenção! %s%s ', [#13#13, E.message])), PChar('Erro'), MB_OK + MB_ICONERROR); end; end; end;
Att.
Sandro Lemes
Desenvolvedor Delphi
quando importei o url deu um monte de erro de declaração pode me dizer se houve com voce tambem
Clique aqui para fazer login e interagir na Comunidade :)