Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 2673 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde, fiz um teste simples aqui pelo www.hurl.it com o seguinte GET ( https://cosmos.bluesoft.com.br/api/gtins/7891331010508 ) com o Token que eles me informaram e não funcionou (tentei ontem e hoje), mas não parece complicado a integração, o problema é a documentação que achei bem fraca. Como retorno é um JSON fica bem simples, só dar um parse nele (versões acima do Delphi 2010 tem bibliotecas prontas), ou utiliza um framework para isso (aconselho o xSuperObject achei bem simples e funciona com FMX).

Abraço

  • 1 mês depois ...
  • Membros Pro
Postado

Se vc estiver usando Delphi XE7+ usa os componentes da REST.*

Vc vai precisar 3 componentes:

REST: TRESTClient;

Request: TRESTRequest;

Response: TRESTResponse;

E vai montar o código parecido com esse:

REST.BaseURL := ' http://cosmos.bluesoft.com.br/api';

Request.Client := REST;

Request.Response := Response;

Request.Method := rmGet;

Request.Resource := '/gtins/{codigo}';

Request.Params.AddHeader('X-Cosmos-Token', 'SEU_TOKEN');

Request.Set Params.ParameterByName('codigo').Value := 'GTIN_DO_PRODUTO';

Request.Execute;

if (Response.StatusCode = 200) then
begin
  Meu_Objeto_Que_Representa_o_JSON_do_Cosmos :=   Meu_Parser_De_Json_Para_Algo_Que_Meu_Sistema_Entende(Response.JSONValue);
end;

Meu_Parser_De_Json_Para_Algo_Que_Meu_Sistema_Entende Aqui vc pode usar xSuperObject como o Renato falou ou outra biblioteca que lê JSON. 

Recomendo usar as do próprio Delphi System.JSON.

Meu_Objeto_Que_Representa_o_JSON_do_Cosmos Aqui pode ser algo que o seu sistema conheça, um Objeto, um DataSet. Algo que represente o retorno do Cosmos.

 

Um pequeno exemplo pra vc pegar valores do retorno do Cosmos usando a System.JSON:

ResponseCosmos: TJSONValue;
// Para pegar a description que está de exemplo no site:
ResponseCosmos.GetValue<TJSONString>('description').Value;
// Para pegar a o code do NCM que está de exemplo no site:
ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('code').Value;  
ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('description').Value;    
ResponseCosmos.GetValue<TJSONObject>('ncm').GetValue<TJSONString>('full_description').Value;      
  
// Note que os Parametros estao em minusculos, é CASESENSITIVE...  

 

  • Curtir 4
  • 3 semanas depois ...
Postado

Boa tarde, Fiz alguns teste com o exemplo acima de Giquieu e deu tudo certo. mais no site da cosmos eles mostra o retorno da consulta apenas com os parâmetros de informações básica do produto como descrição, preço,preço médio, ncm, codbarra etc. até ai tudo bem, mais alguém sabe como pega as informações de tributação federal e estadual, quais são os parâmetros a ser passado?  

 

  • Curtir 1
  • Membros Pro
Postado (editado)

Pedro, na documentação da API não existe nada sobre trazer as informações de tributações. Logo, nessa versão da API não é possível acessar as tributações ou eles não documentaram. Mas creio que a BlueSoft deve estar fazendo alguma coisa pra disponibilizar esses dados...

Acompanho a API do Cosmos faz um tempo, lembro que no inicio era disponibilizado apenas a descrição e alguma coisa de NCM. Hoje já dá até pra pegar a imagem do produto (quando existe rsrss).

Editado por Giquieu
  • Curtir 1
  • 3 semanas depois ...
  • 1 ano depois...
Postado

boa noite, 

 Estou tentando usar o exemplo do  Giquieu  com o Delphi Tokyo mais estou me deparando em uma linha. 
 Request.Method := rmGET; já tentei usar Request.Method := TRequestMethod.rmGET;
 da erro "[dcc32 Error] Unit2.pas(40): E2003 Undeclared identifier: 'rmGET'" 

 obrigada. 

 

 

 

  • 4 semanas depois ...
  • Membros Pro
Postado
Em 2017-5-23 at 21:54, melissanascimento disse:

boa noite, 

 Estou tentando usar o exemplo do  Giquieu  com o Delphi Tokyo mais estou me deparando em uma linha. 
 Request.Method := rmGET; já tentei usar Request.Method := TRequestMethod.rmGET;
 da erro "[dcc32 Error] Unit2.pas(40): E2003 Undeclared identifier: 'rmGET'" 

 obrigada. 

 

 

 

Não tenho o Tokyo para verificar, mas provavelmente é o uses que não está correto... 

Adicione a REST.Types no uses do seu fonte e tente novamente...

 

Pode dar uma olhada aqui:

http://docwiki.embarcadero.com/Libraries/Tokyo/en/REST.Types.TRESTRequestMethod

  • 2 semanas depois ...
Postado

 Boa tarde, Giquieu 
 Desculpe amolar mais estou aprendendo sobre API. Estava mesmo sem declarar "USES REST.types, System.JSON;"

 Porém estou com outras duvidas segue o código que estou tentando obter a Descrição do produto.

procedure TForm2.Button2Click(Sender: TObject);
var ResponseCosmos : TJSONValue;
begin
RESTClient2.BaseURL := ' http://cosmos.bluesoft.com.br/api';
RESTRequest2.Method := TRESTRequestMethod.rmGET;
RESTRequest2.Resource := '/gtins/{codigo}';
RESTRequest2.Params.AddHeader('X-Cosmos-Token', 'TGPSKTTfDy7ut9e6NfFMHA');
RESTRequest2.Params.AddUrlSegment('codigo',Edit3.Text);
RESTRequest2.Execute;

if (RESTResponse2.StatusCode = 200) then begin
  ResponseCosmos.GetValue<TJSONString>('description').Value;
  ShowMessage(ResponseCosmos.ToJSON); // Retorna a Descrição do Produto
end;

Mais da erro do projeto depois da linha if (RESTResponse2.StatusCode = 200) then begin

 

Obrigada. 

 

  • 3 semanas depois ...
  • Membros Pro
Postado
Em 05/07/2017 at 13:00, melissanascimento disse:

 Boa tarde, Giquieu 
 Desculpe amolar mais estou aprendendo sobre API. Estava mesmo sem declarar "USES REST.types, System.JSON;"

 Porém estou com outras duvidas segue o código que estou tentando obter a Descrição do produto.

procedure TForm2.Button2Click(Sender: TObject);
var ResponseCosmos : TJSONValue;
begin
RESTClient2.BaseURL := ' http://cosmos.bluesoft.com.br/api';
RESTRequest2.Method := TRESTRequestMethod.rmGET;
RESTRequest2.Resource := '/gtins/{codigo}';
RESTRequest2.Params.AddHeader('X-Cosmos-Token', 'TGPSKTTfDy7ut9e6NfFMHA');
RESTRequest2.Params.AddUrlSegment('codigo',Edit3.Text);
RESTRequest2.Execute;

if (RESTResponse2.StatusCode = 200) then begin
  ResponseCosmos.GetValue<TJSONString>('description').Value;
  ShowMessage(ResponseCosmos.ToJSON); // Retorna a Descrição do Produto
end;

Mais da erro do projeto depois da linha if (RESTResponse2.StatusCode = 200) then begin

 

Obrigada. 

 

Olá,

Provavelmente seu ResponseCosmos está NIL. Faça o seguinte:

ResponseCosmos := RESTResponse2.JSONValue;

ou

RESTResponse2.JSONValue.GetValue<TJSONString>('description').Value;

Tome cuidado ao acessar variáveis não instanciadas...

  • Este tópico foi criado há 2673 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.