2015-05-01 4 views
0

Я пытался отправить некоторые данные JSON в RESTful API. Но данные не публикуются. Я использовал запрос узла от: https://github.com/request/request и использовал фрагменты кода с этой страницы. мой фрагмент кода:узел запрос данные сообщения

var async = require('async'); 
var request = require('request'); 

var options = { 
    url: 'http://abcd.dfgh.com/v2.0/observations', 
    method: 'POST', 
    headers: { 
     'x-api-key': '123456=', 
     'content-type': 'application/json' 
    } 
}; 

SensorTag.discover(function(sensorTag) { 
    function callback(error, response, postdata) { 
     console.log("HERE GOES POST DATA : " + postdata); 
     if (!error && response.statusCode == 200) { 
      var info = JSON.parse(postdata); 
      console.log(info.stargazers_count + " Stars"); 
      console.log(info.forks_count + " Forks"); 
     } 
    } 
    async.series([ 
     /*some functions*/ 
     function(callback) { 
      setTimeout(callback, 2000); 
      loop(); 
     } 
    ]) 
    function loop() { 
     async.series([ 
      /*Some functions*/ 
      function(callback) { 
       /*data etc...*/ 
       var postdata = "{ \"version\": \"1.0.1\", \"observations\": [ { \"sensor\": \"TISensorTag_temp_01\", \"record\": [ { \"starttime\": \"" + formatDate(new Date()) + "\", \"output\": [ { \"name\": \"ObjTemp\", \"value\": \"" + objtemp + "\" }, { \"name\": \"AmbTemp\", \"value\": \"" + ambtemp + "\" } ] } ] } ] }"; 
       request.post(options, callback); 
      } 

     ]) 
    } 
}) 

Но данные не отвечал, он продолжает цикл без размещения данных. Кто-нибудь может прояснить, что произошло? Кроме того, что я нашел это request не называет callback function, потому что эта часть я не могу видеть:

console.log("HERE GOES POST DATA : "+postdata); 
+1

Это не кажется, что вы на самом деле использовать 'postdata' –

+0

@ExplosionPills пожалуйста, проверьте функцию обратного вызова – Zim

ответ

0

Вы на самом деле не с помощью postdata переменной.

Попробуйте выполнить его по запросу, например.

var req = request.pos(options, callback); 
req.end(postdata); // Writes data to the stream, and closes it 
0

Вы не используете postdata при отправке запроса:

var postdata = "{ \"version\": \"1.0.1\", \"observations\": [ { \"sensor\": \"TISensorTag_temp_01\", \"record\": [ { \"starttime\": \"" + formatDate(new Date()) + "\", \"output\": [ { \"name\": \"ObjTemp\", \"value\": \"" + objtemp + "\" }, { \"name\": \"AmbTemp\", \"value\": \"" + ambtemp + "\" } ] } ] } ] }"; 
options.data = postdata; //added data to post request 
request.post(options, callback); 

О Ответного, вы настроите обратный вызов и в вашем случае вы не должны проходить обратный вызов в качестве параметра функции , Попробуйте использовать следующее:

async.series([ 
    /*some functions*/ 
    function() { 
     setTimeout(callback, 2000); 
     loop(); 
    } 
]) 
+0

Я попытался это, но после этого не произошло. – Zim

+0

, и я должен установить еще один обратный вызов для ответа POST, поэтому я установил его – Zim

+0

Я попытался с этим: http://blog.modulus.io/node.js-tutorial-how-to-use-request-module Это работал, но это не оптимизированный код, для многих функций мне нужно писать много раз. в то время как это будет оптимизировано. Пожалуйста, дайте мне знать, как это сделать – Zim

Смежные вопросы