Consulta CEP, entre outros serviços, diretamente no webService dos Correios
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?wsdlNa unit importada, substitua a linha :InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioDocument);por:InvRegistry.RegisterInvokeOptions(TypeInfo(AtendeCliente), ioHasAllSOAPActions);ouInvRegistry.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);varwsAtendeCliente: 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);trytrywsConsultaCepReq := consultaCEP.Create;wsConsultaCepResp := consultaCEPResponse.Create;HTTPRIO1.HTTPWebNode.UseUTF8InHeader := True;wsAtendeCliente := GetAtendeCliente(False, '', HTTPRIO1);wsConsultaCepReq.cep := edtCep.Text;trywsConsultaCepResp := wsAtendeCliente.consultaCEP( wsConsultaCepReq );excepton E: ERemotableException dobeginif (UpperCase(Trim(E.message)) = 'CEP NAO ENCONTRADO') or (UpperCase(Trim(E.message)) = 'CEP NAO INFORMADO') thenbeginApplication.MessageBox(PChar(Format('Atenção! Cep %s não informado/encontrado!', [edtCep.Text])), PChar('Mensagem'), MB_OK + MB_ICONINFORMATION);Exit;endelsebeginraise 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 );finallyFreeAndNil(wsConsultaCepReq);FreeAndNil(wsConsultaCepResp);wsAtendeCliente._Release;endexcepton E: Exception dobeginApplication.MessageBox(PChar(Format('Atenção! %s%s ', [#13#13, E.message])), PChar('Erro'), MB_OK + MB_ICONERROR);end;end;end;Att.Sandro LemesDesenvolvedor Delphi;
Discussão (0)
Carregando comentários...