簡體   English   中英

節點請求發布數據

[英]node request post data

我試圖將一些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);

您實際上並沒有使用postdata變量。

嘗試將其管道傳輸到請求,例如

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

您在發送請求時未使用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);

關於Callback ,您已經初始化了callback,在這種情況下,您不必將callback作為函數參數傳遞。 嘗試使用以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM