用node请求接口http://localhost.manage.donotcall.com.cn/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528
时间: 2024-04-26 21:25:17 浏览: 17
使用Node.js发送GET请求代码如下:
```javascript
const https = require('https');
https.get('http://localhost.manage.donotcall.com.cn/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528', (resp) => {
let data = '';
// 接收到数据块时触发
resp.on('data', (chunk) => {
data += chunk;
});
// 接收完所有数据时触发
resp.on('end', () => {
console.log(JSON.parse(data));
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
```
这里的URL带有查询参数`start_time`和`end_time`,可以直接拼接在URL中。在请求的回调函数中,使用`on`方法监听数据流的`data`事件,将数据块添加到已接收到的数据中,直到数据接收完毕,触发`end`事件,此时可以对数据进行处理。需要注意的是,如果目标API使用的是HTTP协议而不是HTTPS协议,需要使用`http`模块。
相关问题
Error: getaddrinfo ENOTFOUND http://localhost.manage.donotcall.com.cn at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) { errno: -3008, code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'http://localhost.manage.donotcall.com.cn' }
这个错误通常是由于 DNS 解析失败导致的。可能的原因有:
1. 您的主机无法解析该域名。请检查您的 hosts 文件,确认是否有正确的解析记录。
2. 您的网络连接有问题。请检查您的网络连接,并确认您可以访问该域名。
3. 该域名不存在。请确认该域名是否正确,并且正在运行相应的服务。
针对您的错误信息,`http://localhost.manage.donotcall.com.cn` 这个域名解析失败了。请确认该域名是否正确,并且正在运行相应的服务。同时,建议您尝试使用 IP 地址代替域名进行访问,以确定是否与 DNS 解析有关。
function getMchArr(){ const options = { hostname: 'localhost.manage.donotcall.com.cn', port: 80, path: '/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528&avg_num=3000000', method: 'GET' }; var mch_arr = []; const req = http.request(options, (res) => { res.on('data', (chunk) => { var result = chunk.toString(); var result = JSON.parse(result); for (let i = 0; i < result.data.length; i++) { const item = result.data[i]; mch_arr.push(item.mch_id) console.log(1111) } }); }); req.on('error', (error) => { console.error(error); }); req.end(); console.log(222) return mch_arr; }1111还没打印出来就打印了222,怎么让他顺序执行
要让这段代码按照顺序执行,可以将返回 `mch_arr` 的操作放到请求响应的回调函数中,这样就可以等到请求返回后再返回 `mch_arr`。例如,可以将代码改为:
```
function getMchArr(callback) {
const options = {
hostname: 'localhost.manage.donotcall.com.cn',
port: 80,
path: '/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528&avg_num=3000000',
method: 'GET'
};
var mch_arr = [];
const req = http.request(options, (res) => {
res.on('data', (chunk) => {
var result = chunk.toString();
var result = JSON.parse(result);
for (let i = 0; i < result.data.length; i++) {
const item = result.data[i];
mch_arr.push(item.mch_id)
console.log(1111)
}
callback(mch_arr); // 在请求回调函数中返回 mch_arr
});
});
req.on('error', (error) => {
console.error(error);
});
req.end();
}
getMchArr((mch_arr) => { // 调用 getMchArr 并在回调函数中处理返回的 mch_arr
console.log(mch_arr);
});
```
这样,当调用 `getMchArr` 时,它会发起一个 HTTP GET 请求,请求返回后会执行回调函数,并将 `mch_arr` 作为参数传入。在回调函数中,可以对 `mch_arr` 进行处理,例如打印出来。