Jump to content
Sandro Lemes

Consulta CEP, entre outros serviços, diretamente no webService dos Correios

Recommended Posts

Bom dia Galera!

 

Ha poucos dias descobri uma maneira nativa e sem precisar de instalar DLLs, componentes infinitos(Deus me livre)... e achei interessante postar (Estou em processo de mudança mental e compartilhar coisas difíceis é um começo! rsss)!

 

Então...vamos lá! Segue abaixo uma maneira nativa e fácil de consultar CEPS nos correios! Espero que gostem!

 

 

 

New >> Other.... Aba WebServices... WSDL Importer... e importe a seguinte URL:
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;

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MateusG
      Bom dia,
       
      Tenho um problema, quando quero colocar o foco para uma coluna especifica pelo nome do campo no banco, nao da certo
      porem se eu fizer colocando o numero da ordem da coluna, exemplo coluna 4, ai da certo, mas queria pelo nome do campo
       
      Eu desejava dessa forma, porem assim ele nao da o foco.
      if condicao then grdAjuste.SetFocus('id_codigo'); Agora se eu fizer assim...
      if condicao then grdAjuste.SetFocus(4); assim da, porem dessa forma eu acho errado...
       
      se alguem puder me ajudar...
      Obrigado.
    • By leo.silvagomes
      Boa noite!
      Tenho um programa que importa determinado arquivo CSV para um banco SQL afim de depois comparar os dados entre versões diferentes do mesmo arquivo, por exemplo uma versão do arquivo é do dia 01/09 e outra do dia 15/09, a finalidade do arquivo é comparar o que mudou
      Uso uma procedure para importar os dados do arquivo para um objeto JvMemoryData e outra para alimentar uma ADOProc que faz o insert no SQL com os dados desse JvMD
       
      Ocorre que o arquivo tem um padrão de 38 colunas e algo prox de 1 milhão de linhas! Como o cliente não usa toda a informação na planilha fiz uma opção de importação rápida que faz o input somente das colunas utilizadas, mas mesmo assim o processo de leitura e importação do arquivo demora até 50 min
       
      Como posso deixar isso mais rápido? 
    • By vinihhylian0103
      Estou fazendo um projeto de Delphi escola e nele tenho que gravar dados no SQLITE. Estou usando o seguinte código:
       
      unit UClube; interface uses   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,   FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,   FMX.StdCtrls, FMX.ListView, FMX.DateTimeCtrls, FMX.Edit,   FMX.Controls.Presentation, FMX.TabControl, FireDAC.Stan.Intf,   FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,   FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,   FireDAC.Phys.SQLite, FireDAC.Phys.SQLiteDef, FireDAC.Stan.ExprFuncs,   FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,   FireDAC.FMXUI.Wait, System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors,   Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.DB, FireDAC.Comp.DataSet,   Data.Bind.Components, Data.Bind.DBScope, FireDAC.Comp.UI, FireDAC.Comp.Client, System.IOUtils; type   TForm1 = class(TForm)     TabControl1: TTabControl;     TabItem2: TTabItem;     tb1: TTabItem;     lvSocio: TListView;     btnSalvar: TButton;     btnCancelar: TButton;     btnEditar: TButton;     btnExcluirr: TButton;     Panel1: TPanel;     edtDataNasc: TDateEdit;     edtCod: TEdit;     edtNome: TEdit;     edtRg: TEdit;     edtCPF: TEdit;     edtEndereco: TEdit;     Label1: TLabel;     Label2: TLabel;     Label3: TLabel;     Label4: TLabel;     Label5: TLabel;     labwl: TLabel;     NOME: TLabel;     Button5: TButton;     Panel2: TPanel;     edtDataA: TDateEdit;     edtCodSocio: TEdit;     Label6: TLabel;     Label10: TLabel;     Label11: TLabel;     Label12: TLabel;     rdbSocio: TRadioButton;     edtNomeA: TEdit;     btnNovoA: TButton;     edtHoraIA: TEdit;     Label7: TLabel;     Edit7: TEdit;     edtHoraFA: TLabel;     edtDescricaoA: TEdit;     Label9: TLabel;     edtValorA: TEdit;     btnCancelarA: TButton;     btnEditarA: TButton;     btnExcluirA: TButton;     btnSalvarA: TButton;     lvAgendamento: TListView;     FDConnPrincipal: TFDConnection;     qrSocio: TFDQuery;     qrAgendamento: TFDQuery;     FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;     FDGUIxWaitCursor1: TFDGUIxWaitCursor;     BindSourceDB1: TBindSourceDB;     BindingsList1: TBindingsList;     LinkListControlToField1: TLinkListControlToField;     LinkControlToField1: TLinkControlToField;     LinkControlToField2: TLinkControlToField;     LinkControlToField3: TLinkControlToField;     LinkControlToField4: TLinkControlToField;     LinkControlToField5: TLinkControlToField;     LinkControlToField6: TLinkControlToField;     qrSocioID: TFDAutoIncField;     qrSocioNOME: TStringField;     qrSocioRG: TStringField;     qrSocioCPF: TStringField;     qrSocioENDERECO: TStringField;     qrSocioDATA_NASC: TDateField;     qrSocioCODIGO: TIntegerField;     qrAgendamentoID: TFDAutoIncField;     qrAgendamentoNOME: TStringField;     qrAgendamentoCODIGO: TIntegerField;     qrAgendamentoDESCRICAO: TWideMemoField;     qrAgendamentoDATA: TDateField;     qrAgendamentoHORA_INICIO: TStringField;     qrAgendamentoHORARIO_FIM: TStringField;     qrAgendamentoVALOR: TLargeintField;     qrAgendamentoSOCIO: TStringField;     procedure rdbSocioChange(Sender: TObject);     procedure btnSalvarClick(Sender: TObject);     procedure Button5Click(Sender: TObject);     procedure btnCancelarClick(Sender: TObject);     procedure btnEditarClick(Sender: TObject);     procedure btnExcluirrClick(Sender: TObject);     procedure FormShow(Sender: TObject);   private     { Private declarations }   public     { Public declarations }   end; var   Form1: TForm1; implementation {$R *.fmx} procedure TForm1.btnCancelarClick(Sender: TObject); begin qrSocio.Cancel; Panel1.Enabled := False; end; procedure TForm1.btnEditarClick(Sender: TObject); begin if qrSocio.RecordCount > 0 then begin   qrSocio.Edit;   Panel1.Enabled := True;   edtNome.SetFocus; end; end; procedure TForm1.btnExcluirrClick(Sender: TObject); begin if qrSocio.RecordCount = 0 then abort; qrSocio.Delete; ShowMessage('Dados excluídos!'); end; procedure TForm1.btnSalvarClick(Sender: TObject); begin if edtNome.Text = '' then begin ShowMessage('O nome não pode estar vázio!'); edtNome.SetFocus; abort; end; qrSocio.Post; qrSocio.Refresh; Panel1.Enabled := False; end; procedure TForm1.Button5Click(Sender: TObject); begin Panel1.Enabled := True; edtNome.SetFocus; qrSocio.Append; end; procedure TForm1.FormShow(Sender: TObject);   begin   FDConnPrincipal.Connected := True;   try  {$IF DEFINED (IOS) or DEFINED (ANDROID)}   FDConnPrincipal.Params.Values['DATABASE'] := TPath.Combine(TPath.GetDocumentsPath, 'BD_CLUBE.s3db');   {$ENDIF}   except on E: Exception do   ShowMessage(e.Message);   end;   qrSocio.Open(); end; procedure TForm1.rdbSocioChange(Sender: TObject); begin  if rdbSocio.IsChecked = true then  begin  edtCodSocio.Enabled := true;  edtCodSocio.SetFocus;  end; end; end.
      E recebo o seguinte erro: 
    • By jotapems
      Bom dia,
      estou tentando criar uma integração a um webservice utilizando o seguinte link do serviço:
      https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl
       
      Para tanto, fiz o seguinte código-teste:
       
      <?php $client = new SoapClient("https://wwwh.cnj.jus.br/pjemni-2x/intercomunicacao?wsdl"); $function = "consultarProcesso"; $arguments = array ( "idConsultante" => "xxx", "senhaConsultante" => "xxx", "numeroProcesso" => "50243604120198130702", "movimentos" => true ); $result = $client->__soapCall($function, $arguments); print $result; ?>  
      Contudo, ao executar o código, recebo o seguinte erro:
      Fatal error: Uncaught SoapFault exception: [soap:Client] Message part param1 was not recognized. (Does it exist in service WSDL?) in C:\xampp\htdocs\wstest\test.php:13 Stack trace: #0 C:\xampp\htdocs\wstest\test.php(13): SoapClient->__soapCall('consultarProces...', Array) #1 {main} thrown in C:\xampp\htdocs\wstest\test.php on line 13  
      Se alguém puder me ajudar, agradeço muito!!
    • By Gilberto Jr
      Boa tarde.
       
      Eu esto com um probleminha que eu não estou conseguindo resolver.
       
      Estou lendo um json atraves de uma webservice https://jsonplaceholder.typicode.com/photos atraves do codigo abaixo.
       
      <html> <head> <title>Teste</title> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <!-- Adicionando Javascript --> <script type="text/javascript" > $(document).ready(function(){ $("#search").click(function(){ $.ajax({ type: "GET", dataType: "json", url: "https://jsonplaceholder.typicode.com/photos", success: function(data) { for (var i in data) { //vai passar por todos os objetos dentro do array $("#title").text(data[i]["title"]); $("#id").text(data[i]["id"]); $("#albumId").text(data[i]["albumId"]); $("#thumbnailUrl").attr("src",data[i]["thumbnailUrl"]); $("#url").attr("src",data[i]["url"]); } } }); }) }); // END Function, END ready </script> </head> <body> <input type="button" placeholder="Busca" id="search" value="Buscar"> <section> <div class="container"> <div class="row" id="content"> <br/> <div id="id"></div><br/> <div id="albumId"></div><br/> <div id="title"></div><br/> <img src="" id="thumbnailUrl"><br/> <img src="" id="url"><br/> </div> </div> </section> </body> </html> Eu estou até conseguindo trazer as informações. Porem vem o ultimo dado do JSON, 
       
      E eu também, tenho que mostrar todas as informações do arquivo JSON. Fazer um for para mostrar todos os dados na tela.
       
      Mas eu não estou conseguindo, poderia me ajudar?
       
      Att;
      Gilberto Jr
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.