Ir para conteúdo
  • Cadastre-se

dev botao

ACBRHTTP : CONSULTA NOVA API CORREIOS : EXEMPLO


Ver Solução Respondido por Victor H. Gonzales - Panda,
  • Este tópico foi criado há 410 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Companheiros

Bom Dia!

Gostaria de solicitar seu auxílio novamente.

Estou tentando efetuar a consulta de Custo de Postagem na nova API dos Correios.

Após diversas pesquisas ( com auxílio de um Desenvolvedor Web ) constatei que a rotina de consula aos correios tem 2 elemenntos obrigatórios :

a)-A URL deverá ser informada com os parâmetros na frente.
Por exemplo : 'https://api.correios.com.br/preco/v1/nacional/04669?cepOrigem=14406004&cepDestino=14620000'
b)-Também deverá ser passado o Token que é gerado no site dos correios como Autorização :
Por exemplo : 'Authorization: Bearer eyjh1oeir'

Meu desafio é conseguir agora efetuar a consulta passando estes parâmetros!

Notei que dentro da Unit : AcbrSocket existe a rotina AcbrHTTP.

Porem me auxiliar indicando como eu poderia utilizar o AcbrHTTP para : 
- efetuar a consulta aos Correios 
- obter o JSon do retorno gerado pelos Correios
?

Podem me passar um exemplo completo de uma rotina ?

Grato pela ajuda.

Carlos
Franca-Sp   
   

  • Consultores
Postado

Qual o custo do uso da API?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Sr. Victor 

Eu não sei qual é o custo que os Correios vão impor ao meu cliente pelo consumo deste serviço.

O que preciso fazer é criar uma forma de realizar a Consulta de Preços através da Api dos Correios.

Meu problema é que não estou ambientado ao uso da rotina AcbrHTTP ( que fica dentro de : ACBrSocket.pas ).
E eu tinha esperanças de conseguir utilizar o AcbrHTTP para realizar a interação com a API.

Para tentar realizar este trabalho eu tentei criar a seguinte rotina :

procedure TForm1.Button1Click(Sender: TObject);
var
  httpSend     : TACBrHTTP;
begin
  httpSend := TACBrHTTP.Create(nil);
  try
    try
      httpSend.HTTPSend.Clear;
      httpSend.HTTPSend.MimeType := 'application/json';
      httpSend.HTTPSend.Headers.Add('Accept-Charset: utf-8');

      // Autorização : Token dos Correios 
      httpSend.HTTPSend.Headers.Add(Trim(memAutorizacao.Text));
      // Url ( com parâmetros concatenados )
      httpSend.HTTPGet(Trim(memURL.Text));
      // Gravo resultado do Retorno em um Memo
      memResultado.Text := httpSend.RespHTTP.Text;
      
    except on E: Exception do
      begin
        Application.ProcessMessages;
        ShowMessage(E.Message);
      end;
    end;
  finally
    FreeAndNil(httpSend);
  end;
end;

Note que nesta aplicação eu tenho 3 objetos do tipo TMemo :
a)-memAutorizacao : Contém o token fornecido pelo Correio
b)-memURL         : Contém a URL base com os parâmetros concatenados
c)-memResultado   : Que deverá receber o retorno  

Eu esperava receber como retorno um arquivo Json.

Sabe me dizer que ajustes terei que fazer nesta rotina ?

Grato

  • Consultores
Postado
9 horas atrás, AnDes Sistemas disse:

Sr. Victor 

Eu não sei qual é o custo que os Correios vão impor ao meu cliente pelo consumo deste serviço.

O que preciso fazer é criar uma forma de realizar a Consulta de Preços através da Api dos Correios.

Meu problema é que não estou ambientado ao uso da rotina AcbrHTTP ( que fica dentro de : ACBrSocket.pas ).
E eu tinha esperanças de conseguir utilizar o AcbrHTTP para realizar a interação com a API.

Para tentar realizar este trabalho eu tentei criar a seguinte rotina :

procedure TForm1.Button1Click(Sender: TObject);
var
  httpSend     : TACBrHTTP;
begin
  httpSend := TACBrHTTP.Create(nil);
  try
    try
      httpSend.HTTPSend.Clear;
      httpSend.HTTPSend.MimeType := 'application/json';
      httpSend.HTTPSend.Headers.Add('Accept-Charset: utf-8');

      // Autorização : Token dos Correios 
      httpSend.HTTPSend.Headers.Add(Trim(memAutorizacao.Text));
      // Url ( com parâmetros concatenados )
      httpSend.HTTPGet(Trim(memURL.Text));
      // Gravo resultado do Retorno em um Memo
      memResultado.Text := httpSend.RespHTTP.Text;
      
    except on E: Exception do
      begin
        Application.ProcessMessages;
        ShowMessage(E.Message);
      end;
    end;
  finally
    FreeAndNil(httpSend);
  end;
end;

Note que nesta aplicação eu tenho 3 objetos do tipo TMemo :
a)-memAutorizacao : Contém o token fornecido pelo Correio
b)-memURL         : Contém a URL base com os parâmetros concatenados
c)-memResultado   : Que deverá receber o retorno  

Eu esperava receber como retorno um arquivo Json.

Sabe me dizer que ajustes terei que fazer nesta rotina ?

Grato

Seria legal termos a informação de custo, se conseguir essa mensuração e repassar. Obrigado.

Referente ao componente, é utilizado o Synapse, tu pode utilizar o ACBrBoleto ou ACBrPIXCD para verificar e utilizar como apoio verificando como é feito Bearer Authentication e como é feito a comunicação via Rest;

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Sr. Victor

Meu problema é que quando eu executo aquela rotina estou recebendo um código Html enorme que começa assim :

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- In&#237;cio das informa&#231;&#245;es dos Correios -->
    <title>Correios</title>
    <link rel="icon" type="image/png" href="/++theme++tema-do-portal-correios/static/imagens/favicon-32x32.png" sizes="32x32" />
    <!-- Inicio Google Analytics -->
    <meta name="apple-itunes-app" content="app-id=1399617917" />

E o esperado é que a API dos correios me devolva uma resposta em JSON.

Como não tenho experiência em interação com APIs, eu não tenho a mínima idéia porque ocorre este erro.

Alguém tem alguma idéia de como resolver isto ?

Grato
 

  • Consultores
Postado

você conseguiu autenticar e o retorno pelo postman?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Sr. Victor :

Sim, no PostMan rodando a rotina recebemos este resultado :

{
    "coProduto": "04669",
    "pcBase": "15,43",
    "pcBaseGeral": "16,24",
    "peVariacao": "0,0000",
    "pcReferencia": "16,24",
    "vlBaseCalculoImposto": "16,24",
    "inPesoCubico": "N",
    "psCobrado": "1",
    "peAdValorem": "0,0100",
    "vlSeguroAutomatico": "24,50",
    "qtAdicional": "0",
    "pcFaixa": "16,24",
    "pcFaixaVariacao": "16,24",
    "pcProduto": "16,24",
    "pcFinal": "16,24"
}


A questão é : como realizar a consulta utilizando o AcbrHTTP e obtendo o retorno em JSon ?

Que informações estão faltando para que seja indicado que o retorno ocorra em JSon ( mesmo que seja uma mensagem de erro igual as que aparecem no PostMan ).

Grato

 

  • Consultores
Postado

precisa criar uma classe para o OAuth2 para você conseguir gerar o Bearer, igual tem no boleto ou no PixCD, e depois fazer os headers e o body se houver payload.

se o ACBrHTTP não está atendendo, pode usar direto na classe do Synapse, igual o boleto ou pixcd faz.

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Sr. Vitor

Na verdade, o que deve estar ocorrendo é que eu sou inexperiente em Desenvolvimento Web.

Pode ser que esteja faltando passar conteúdo para alguma propriedade do AcbrHTTP que eu não estou sabendo e isto estar sendo 

a causa do retorno da Api dos Correios não estar vindo no padrão que eu preciso.

Vou continuar tentando aqui para ver se acho o que está ocasionando o problema.

Agradeço muito por sua ajuda.

  • Consultores
Postado

envie a documentação e credenciais por email [email protected]

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Consultores
Postado
1 hora atrás, AnDes Sistemas disse:

Sr. Victor

Eu encaminhei mensagem no email [email protected] mas não obtive resposta.

 

Boa tarde,

o ACBrSedex pelo Correios será descontinuado a principio, referente ao email, não me recordo de ter o visto.

Está sendo alterado o instalador do ACBr e os pacotes do TCP para utilizar o penultimo commit da classe

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Consultores
  • Solution
Postado
40 minutos atrás, AnDes Sistemas disse:

Sr. Victor

Eu acabei de enviar novo email para [email protected] sob o Título : SOLICITAÇÃO DE AUXILIO : CONSULTA NOVA API DOS CORREIOS.

 

Boa tarde,

Referente a esse email pontual, a própria @Juliana Tamizou havia lhe respondido em 10/10/2023 as 10:50, o ACBrPro não possui esse escopo, caso queira consultoria especifica para implementação desse serviço na sua aplicação usando o Synapse, como mesmo foi falado, podemos conversar em particular sob um orçamento.

Referente ao que eu havia falado, era a documentação da API e as credenciais para serem enviadas por email, isso não foi o que aconteceu, foi recebido uma fração de código.

Mas devido a API possuir custos e ter baixa adesão, via componente ela será descontinuada, como eu falei mais cedo, a forma que o componente irá trabalhar é como no penúltimo commit, mas para isso há alterações nos pacotes a serem feitas ainda.

 

  • Curtir 1
Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.