https.request api mercadolivre

499 views
Skip to first unread message

Pineli

unread,
Sep 3, 2013, 3:32:38 PM9/3/13
to nod...@googlegroups.com
Estou tentando ler itens de produtos pela api do mercadolivre, mas não está retornando corretamente. A mesma pesquisa pelo browser ou curl retorna ok
Alguém consegue ver ago de errado aqui?

Fiz um formulario que envia o que vai ser pesquisado... ' l '

  var param_pesquisa = req.body.l;
  ...
  var parametros = new Array()
  parametros['q']                        = param_pesquisa
  var post_data = querystring.stringify(parametros)
  console.log(post_data) 

  var post_options = {
      host: 'api.mercadolibre.com',
      //port: '443',
      path: '/sites/MLB/search',
      method: 'GET',

  };

  var post_req = https.request(post_options, function(retorno) {
          retorno.setEncoding('utf8');
          console.log("statusCode: ", res.statusCode);
          var data = ""
          retorno.on('data', function(d) {
              data += d;
          })
          retorno.on('end', function() {
             console.log(data) 
             res.write(data)
             res.end()  
          })
  });

  post_req.write(post_data);
  post_req.end();

  Retorna 
  {"site_id":"MLB","paging":{"total":0,"offset":0,"limit":50},"results":[],"secondary_results":[],"related_results":[],"sort":{"id":"relevance","name":"Mais relevantes"},"available_sorts":[{"id":"price_asc","name":"Menor preço"},{"id":"price_desc","name":"Maior preço"}],"filters":[],"available_filters":[]}
  Total = "total":0


  "total": 1400,


 Obrigado

Pineli

unread,
Sep 3, 2013, 5:13:29 PM9/3/13
to nod...@googlegroups.com
usando o modulo 'request' funciona. se alguem souber o problema do https..eu prefiro

Diogo Duailibe

unread,
Sep 3, 2013, 6:52:56 PM9/3/13
to nod...@googlegroups.com
De acordo com a documentação, você deve adicionar o querystring junto ao path:

 var post_options = {
      host: 'api.mercadolibre.com',
      //port: '443',
      path: '/sites/MLB/search?'+post_data,
      method: 'GET'
  };

  • path: Request path. Defaults to '/'. Should include query string if any. E.G. '/index.html?page=12'



2013/9/3 Pineli <carlos...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "NodeJS Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nodebr+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Atenciosamente,

Diogo Duailibe da Silva
Técnico de Informática
Procuradoria da República no Maranhão - MPF
Email: diodu...@gmail.com

Pineli

unread,
Sep 3, 2013, 7:55:41 PM9/3/13
to nod...@googlegroups.com
o.O funcionou!
mas pra que o post_req.write(post_data) então?

estranho, uso da mesma forma com um gateway de pagamento e o write adiciona na url o ? e os parametros.

enfim, obrigado pela ajuda.

Diogo Duailibe

unread,
Sep 3, 2013, 10:51:21 PM9/3/13
to nod...@googlegroups.com
Talvez o gateway de pagamento seja POST e o método write com parâmetro seja para preencher o body de uma requisição POST (sem parametro ou passando null quando é GET). Fazendo uma alusão ao ajax, em específico o método send, usa-se o send(null) (ou só send()) para requisições GET e send(data) para requisições POST. 

Espero ter ajudado!


2013/9/3 Pineli <carlos...@gmail.com>

Pineli

unread,
Sep 4, 2013, 7:54:34 AM9/4/13
to nod...@googlegroups.com
Era isso mesmo... obrigado Diogo.
abraço

Bruno Fuster

unread,
Sep 3, 2013, 6:34:51 PM9/3/13
to nod...@googlegroups.com
tenta adicionar isso ao postOptions:

postOptions.secureOptions = require('constants').SSL_OP_NO_TLSv1_2;
postOptions.ciphers = 'ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM';
postOptions.honorCipherOrder = true;



2013/9/3 Bruno Fuster <bruno...@gmail.com>
qual versão do node vc ta usando?




2013/9/3 Pineli <carlos...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "NodeJS Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nodebr+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Bruno Fuster



--
Bruno Fuster

Bruno Fuster

unread,
Sep 3, 2013, 6:33:08 PM9/3/13
to nod...@googlegroups.com
qual versão do node vc ta usando?




2013/9/3 Pineli <carlos...@gmail.com>
usando o modulo 'request' funciona. se alguem souber o problema do https..eu prefiro

--
Você está recebendo esta mensagem porque se inscreveu no grupo "NodeJS Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nodebr+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Bruno Fuster
Reply all
Reply to author
Forward
0 new messages