调用Riot-Api Im在https GET请求中接收不完整的JSON。Node.js https-module不完整的JSON响应
调试后,我意识到,取决于我等待多少(断点)预先执行https'on'data'回调Im实际上接收完整的JSON对象。
(API平均响应时间对我来说是200-300ms)
let getOptions = function(url) {
return {
host: 'na.api.pvp.net',
port: 443,
path: `${url}?api_key=${apiKey}`,
method: 'GET'
};
}
exports.Call = function(url, callback) {
let response = {};
let req = https.request(getOptions(url), function(res) {
response.statusCode = res.statusCode;
res.on('data', function(data) {
response.json = JSON.parse(data);
callback(response);
});
});
req.on('error', function(err) {
response.err = err;
callback(response);
});
req.end();
};
运行的代码,而断点或只打破了很短的时间我要么运行到错误:
JSON.parse(data): Unexpected Token in JSON at position ...
或
JSON.parse(data): Unexptected end of JSON Input.
正如我所期待的'数据'回调只有在请求完成后才能执行im confused abo如何解决它(而不是人为地延迟它)。
也许响应已经JSON格式,也没有必要来分析呢?尝试删除'JSON.parse'的数据 – Edgar
@Edgar我得到一个原始缓冲区,甚至偶尔成功格式化为JSON。 –