调用Riot-Api我在https GET请求上接收不完整的JSON。
经过调试,我意识到我要等多少等待(断点)预执行 https on'data'回调我实际上收到了完整的JSON对象。
(我的平均API响应时间为200-300毫秒)
albumName
运行没有断点的代码或只是短时间内我运行错误:
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 ...
正如我所期望的,只有在请求完成后才会执行'数据'回调,我对如何修复它感到困惑(没有人为地推迟它)。
答案 0 :(得分:0)
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
a = new QPushButton(this);
connect(a, SIGNAL (clicked()),this, SLOT (clickedSlot()));
}
void MainWindow::clickedSlot()
{
QProgressBar *prog = new QProgressBar(this);
QListWidgetItem *it;
it = new QListWidgetItem(ui->listWidget);
ui->listWidget->insertItem(ui->listWidget->size().height(),it);
it->setSizeHint(QSize(200,50));
ui->listWidget->setItemWidget(it, prog);
}
返回stream - 它不是一个包含整个响应的简单回调。
如果要解析整个响应,则必须buffer and concatenate。