Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从阵列节点进行多个api端点调用_Javascript_Json_Node.js - Fatal编程技术网

Javascript 从阵列节点进行多个api端点调用

Javascript 从阵列节点进行多个api端点调用,javascript,json,node.js,Javascript,Json,Node.js,从数组调用API端点时遇到问题。该数组包含我需要输入端点的值,以便获取我需要的数据。我遇到的问题是,当我控制台记录来自api调用的数据时,我收到了JSON文本。然而,当我试图解析文本并从JSON文本中获取特定值时,它并没有给出结果。以下是我正在编写的代码: var http = require("http"); var areaCodes = ["'0071950')", "'0072850')", "'0073450')", "'0075700')", "'0076450')", "'0078

从数组调用API端点时遇到问题。该数组包含我需要输入端点的值,以便获取我需要的数据。我遇到的问题是,当我控制台记录来自api调用的数据时,我收到了JSON文本。然而,当我试图解析文本并从JSON文本中获取特定值时,它并没有给出结果。以下是我正在编写的代码:

var http = require("http");
var areaCodes = ["'0071950')", "'0072850')", "'0073450')", "'0075700')", "'0076450')", "'0078700')", "'0900001')", "'0900000')"];
var results = [];
var encode = [];

    //source: http://stackoverflow.com/questions/17811827/get-a-json-via-http-request-in-nodej
for(var i = 0; i < areaCodes.length; i++){
    var realmStatus = "http://api.dol.gov/V1/Statistics/OES/OE_SERIES/?KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX&$filter=(OCCUPATION_CODE eq '151131' ) and (AREA_CODE eq " + areaCodes[i];
     encode.push(encodeURI(realmStatus));

var options = {
        host: 'api.dol.gov',
        path: encode[i],
        type: 'GET',
        dataType: 'json',
        headers: {'accept' : 'application/json'}
};
console.log("Start");
var x = http.request(options,function(res){
    console.log("Connected");
     var str = '';
    res.on('data', function(chunk) {
        str += chunk;
    });
    res.on('data',function(data){
        if(res.statusCode == 200){
            //console.log("res status is good");
            try{
                 var dataA = JSON.parse(str);
                //run a for loop 
                for(var h = 0; h < dataA.d.results.length; h++){
                    var seriesNum = dataA.d.results[h].SERIES_ID; 
                    array.push(seriesNum);
                    console.log(seriesNum);
                }
                 //end for
            }catch(e){
                console.log('Error parsing JSON');
            }
        }
    });
});
x.end();
}//end for loop
var http=require(“http”);
var区域代码=[“'0071950')”、“'0072850')、“'0073450')、“'0075700')、“'0076450')、“'0078700')、“'0900001')、“'0900000')”;
var结果=[];
var encode=[];
//资料来源:http://stackoverflow.com/questions/17811827/get-a-json-via-http-request-in-nodej
对于(变量i=0;i

如果有人愿意解释我是否做错了什么,或者我是否遗漏了什么,我将不胜感激。谢谢!

看起来你的第二个
res.on('data')
(带有
try…catch
)的应该是
res.on('end'))
,在获取整个文件后将触发

查看官方Node.js文档中的示例:。请注意,它们使用
res.on('data')
一次和
res.on('end')
一次


除此之外,你至少应该马上得到一些分析结果。

嘿,谢谢你的快速响应,但是,这不起作用。这很奇怪,因为我对另一个端点使用了相同的代码,而且效果很好。唯一的区别是,在另一个端点中,我没有使用数组存储值来连接端点。pr问题是,当我运行程序时,我得到了“错误解析JSON”这意味着没有执行
try
块。当我调用我的另一个端点时,这不是问题。我认为原因是您在第一个端点之后立即调用第二个
'data'
。根据负载的大小,您可能只在一个数据中获得整个JSON(这可能就是其他端点工作的原因),但对于这一个,该负载需要多个
数据
调用。但是,您在第一个调用之后调用它,所以您可能只有大约一半的JSON,这就是它抛出错误的原因。有趣的是,它有时会工作,例如,在最初调用几小时后,它不工作,但它给了我结果我想..奇怪的是,这会更符合我所说的。如果有效负载足够小(或足够快),可以在一次数据调用中使用,它就会工作。如果它更大,则必须多次调用('data')
,但您的代码会在第一次调用之后尝试解析JSON。