无法使用node.js将HTTP GET嵌套在另一个内部

时间:2017-07-10 10:58:32

标签: javascript node.js http-get

我想做一个非常简单的任务,但我被卡住了!

场景是这样的:

在向我的api发出get请求后,我想从某个外部站点获取http.get,然后将该外部站点的响应发送回原始的api请求。

显然,调用是异步的,所以字符串loremParagraph在将它发送回api之前没有正确加载。

我也收到错误消息:错误:发送后无法设置标题。

这是我的代码:

module.exports = function(app, express) {

var myLoremRouter = express.Router();

var loremParagraph = '';
//HTTP GET accessed at localhost:8081/mylorem
myLoremRouter.get('/', function(req, res) {

    // Fetch one paragpraphlorem ipsum text from http://www.faux-texte.com/text-random-1.htm
    http.get("http://www.faux-texte.com/text-random-1.html", function(resp) {
            resp.on('data', function(chunk) {
                // console.log('BODY: ' + chunk);
                var $ = cheerio.load(chunk);
                loremParagraph = $('div.Texte').text();
                console.log(loremParagraph);
                // console.log(resp.status);

            });

        })
        // If any error has occured, log error to console
        .on('error', function(e) {
            console.log("Got error: " + e.message);
        });

    //Finally send the result back to the api call
    res.json({ message: loremParagraph });
});

return myLoremRouter;

};

1 个答案:

答案 0 :(得分:1)

试试这个。这里添加了块,直到我们准备好使用完整的数据。

https://stackoverflow.com/a/21953201/6219247

myLoremRouter.get('/', function(req, res) {
    var body = '';
    http.get({
        host: 'www.faux-texte.com',
        port: 80,
        path: '/text-random-1.html'
    }, function(resp) {
        resp.on('data', function(chunk) {
            body += chunk;
        });
        resp.on('end', function(chunk) {
            var $ = cheerio.load(body);
            loremParagraph = $('div.Texte').text();
            res.json({ message: loremParagraph });
        });
    })
    .on('error', function(e) {
        // handle/send error
        res.send(/*...*/);
    });
});