Ir para conteúdo
  • Cadastre-se

dev botao

RestRequest


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

Recommended Posts

  • Membros Pro

Estou tentando enviar um Post para cadastrar um produto, porém se tiver acentuação está retornando o erro abaixo:
{
    "code": 400,
    "message": "Bad Request",
    "description": "Problems parsing JSON"
}

Porém se enviar via PostMan envia normal, alguém tem alguma dica?

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

@vini boa tarde !
O envio de JSON inválido resultará em uma resposta 400 Bad Request.
Pode postar a estrutura do json q esta enviando?

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Consultores
2 horas atrás, VINYFARIA disse:

UTF8

 

você não está encodando ele... possivelmente está quebrando o parser.

veja se o header que você está enviando tambem é compativel

  • 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"

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

{  "images": [    {      "src": "http://superadega.vteximg.com.br/arquivos/ids/163711/guinness-draught.jpg"    }  ],  "name": {    "pt": "Cerveja Guinness Draught Lata 440ml"  },  "description": {                   "pt": "<p>A Guinness Draught é uma cerveja tipo Stout, de alta fermentação, feita com percentual de malte torrado, que lhe confere sua marcante cor rubi vermelho escura e um paladar tostado. O lúpulo utilizado confere à Guinness um distinto sabor, com excelente balanço entre o amargor e a doçura. Sua espuma densa e cremosa torna a Guinness uma cerveja extremamente saborosa e mais robusta que qualquer cerveja super-premium. A cervejaria St. James Gate está localizada na cidade de Dublim na Irlanda desde 1759. A Guinness é dita como a cerveja Stout mais consumida no mundo.</p>"  },  "variants": [     {      "price": "18.49",      "stock_management": true,      "stock": 0,      "weight": "0.43",      "sku": 8023,      "cost": "1"    }  ],  "categories": [17926108]}

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Se você compor essa String com o Delphi, por padrão ela é CP1252... Experimente converter para UTF8, antes de enviar...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Qual a solução eu usaria para converter? estou declarando a variável como String, continuaria: Segue parte do código abaixo:
 

var
  body:String;
  i:Integer;
  qr:TUniquery;
  LRESTResponseDataSetAdapter: TRESTResponseDataSetAdapter;
  LFDMemTable : TFDMemTable;
begin
  cxProgressBar1.Visible := True;
  qrProd.Last;
  cxProgressBar1.Position := 0;
  cxProgressBar1.Properties.Max := qrProd.RecordCount;
  qrProd.First;
  while not qrProd.Eof do begin
    if qrProd.FieldByName('SEL').AsString = 'S' then begin

      qr:=TUniquery.Create(nil);
      qr.Connection := dmLogin.Conexao;
      LRESTResponseDataSetAdapter:=TRESTResponseDataSetAdapter.Create(Self);
      LFDMemTable:= TFDMemTable.Create(Self);
      LRESTResponseDataSetAdapter.Dataset := LFDMemTable;
      LRESTResponseDataSetAdapter.Response := RESTResponsePOST;
      RESTClientPOST.BaseURL := 'https://api.nuvemshop.com.br/v1/2905426/products';
           body := '{'+
                  '  "images": ['+
                  '    {'+
                  '      "src": "http://'+qrProd.FieldByName('URL').AsString+'"'+
                  '    }'+
                  '  ],'+
                  '  "name": {'+
                  '    "pt": "'+qrProd.FieldByName('SITE_NOMEPRODUTO').AsString+'"'+
                  '  },'+
                  '  "description": {'+
                  '                   "pt": "<p>'+qrProd.FieldByName('DADOSTECNICOS').AsString+'</p>"'+
                  '  },'+
                  '  "variants": [ '+
                  '    {'+
                  '      "price": "'+qrProd.FieldByName('PRICE').AsString+'",'+
                  '      "stock_management": true,'+
                  '      "stock": '+qrProd.FieldByName('ESTOQUE').AsString+','+
                  '      "weight": "'+dmLogin.TratarValor(qrProd.FieldByName('PESOBRUTO').AsString)+'",'+
                  '      "sku": '+qrProd.FieldByName('CODPROD').AsString+','+
                  '      "cost": "1"'+
                  '    }'+
                  '  ],'+
                  '  "categories": ['+qrProd.FieldByName('CODSECAO').AsString+']'+
                  '}';

          RESTRequestPOST.Params[2].Value := body;
          cxMemo1.Lines.Add(body);

          RESTRequestPOST.Execute;

          cxMemo1.Lines.Add(RESTResponsePOST.Content);
 

Link para o comentário
Compartilhar em outros sites

  • Consultores
2 horas atrás, VINYFARIA disse:

Qual a solução eu usaria para converter? estou declarando a variável como String, continuaria: Segue parte do código abaixo:
 

var
  body:String;
  i:Integer;
  qr:TUniquery;
  LRESTResponseDataSetAdapter: TRESTResponseDataSetAdapter;
  LFDMemTable : TFDMemTable;
begin
  cxProgressBar1.Visible := True;
  qrProd.Last;
  cxProgressBar1.Position := 0;
  cxProgressBar1.Properties.Max := qrProd.RecordCount;
  qrProd.First;
  while not qrProd.Eof do begin
    if qrProd.FieldByName('SEL').AsString = 'S' then begin

      qr:=TUniquery.Create(nil);
      qr.Connection := dmLogin.Conexao;
      LRESTResponseDataSetAdapter:=TRESTResponseDataSetAdapter.Create(Self);
      LFDMemTable:= TFDMemTable.Create(Self);
      LRESTResponseDataSetAdapter.Dataset := LFDMemTable;
      LRESTResponseDataSetAdapter.Response := RESTResponsePOST;
      RESTClientPOST.BaseURL := 'https://api.nuvemshop.com.br/v1/2905426/products';
           body := '{'+
                  '  "images": ['+
                  '    {'+
                  '      "src": "http://'+qrProd.FieldByName('URL').AsString+'"'+
                  '    }'+
                  '  ],'+
                  '  "name": {'+
                  '    "pt": "'+qrProd.FieldByName('SITE_NOMEPRODUTO').AsString+'"'+
                  '  },'+
                  '  "description": {'+
                  '                   "pt": "<p>'+qrProd.FieldByName('DADOSTECNICOS').AsString+'</p>"'+
                  '  },'+
                  '  "variants": [ '+
                  '    {'+
                  '      "price": "'+qrProd.FieldByName('PRICE').AsString+'",'+
                  '      "stock_management": true,'+
                  '      "stock": '+qrProd.FieldByName('ESTOQUE').AsString+','+
                  '      "weight": "'+dmLogin.TratarValor(qrProd.FieldByName('PESOBRUTO').AsString)+'",'+
                  '      "sku": '+qrProd.FieldByName('CODPROD').AsString+','+
                  '      "cost": "1"'+
                  '    }'+
                  '  ],'+
                  '  "categories": ['+qrProd.FieldByName('CODSECAO').AsString+']'+
                  '}';

          RESTRequestPOST.Params[2].Value := body;
          cxMemo1.Lines.Add(body);

          RESTRequestPOST.Execute;

          cxMemo1.Lines.Add(RESTResponsePOST.Content);
 

Bom dia!

Faça um teste usando NativeStringToUTF8 da unit ACBrUtil.Strings

Consultor SAC ACBr

Diego Folieni
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 !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 369 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.