在循环中获取URL的主机名 - Nodejs

时间:2015-10-29 19:19:15

标签: javascript node.js httpresponse hostname http-response-codes

所以我正在尝试制作一个http状态代码检查器。但由于某种原因,响应主机名返回undefined,但我可以检索响应statusCode。我抓住它了吗?

var fs = require('fs');
var http = require('http');
var stdin = process.openStdin();
stdin.addListener('data', function (userInput) {
    var urlListPath = userInput.toString().trim();
    fs.readFile(urlListPath, function (err, data) {
        if (err) {
            return console.log(err);
        }
    var urlArray = data.toString().split("\n");
        urlArray =  urlArray.filter(Boolean);

        for (var i = 0; i < urlArray.length; i++){
            http.get({hostname: urlArray[i]}, function(res){
                console.log(res.hostname + ' | ' + res.statusCode + ' | ' + res.statusMessage);
            });
        }
  });
});

1 个答案:

答案 0 :(得分:0)

通过包装在@bluesman建议的函数中来解决:

var fs = require('fs');
var http = require('http');
var stdin = process.openStdin();
stdin.addListener('data', function (userInput) {
    var urlListPath = userInput.toString().trim();
    fs.readFile(urlListPath, function (err, data) {
        if (err) {
            return console.log(err);
        }
    var urlArray = data.toString().split("\n");
        urlArray =  urlArray.filter(Boolean);

        for (var i = 0; i < urlArray.length; i++){
            getHttpInfo(urlArray[i]);
        }
  });
});

function getHttpInfo(url){
    http.get({hostname: url}, function(res){
        console.log(url + ' : ' + res.statusCode + ' | ' + res.statusMessage);
    });
}