gpt4 book ai didi

c++ - QNetworkReply 响应是否有数据限制?

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:45 24 4
gpt4 key购买 nike

我正在用 Qt 编写一个类,用于从 Bricklink API(一个乐高数据库)中检索信息。它使用 QOAuth1 类进行身份验证,并使用 QNetworkReply 捕获来自 HTTP GET 请求的响应。这工作正常,除非正在检索的数据太大。

在下面的示例中,我请求了一个特定的库存(乐高零件列表)。当我请求 category_id 142 时,我得到了一个包含 50 个部分的漂亮列表。但是 category_id 485 包含 75 个元素并且什么都不返回。甚至没有错误。

void Category::getInventory()
{
QUrl url("https://api.bricklink.com/api/store/v1/inventories");
QVariantMap parameters;
parameters.insert("category_id", "485"); // 75 elements not OK
// parameters.insert("category_id", "142"); // 50 elements OK

QNetworkReply *reply = bricklink.get(url, parameters);

connect(reply, &QNetworkReply::finished, this, &Category::parseJson);
}

void Category::parseJson()
{
QJsonParseError parseError;
auto reply = qobject_cast<QNetworkReply*>(sender());
if (reply->error()) {
qDebug() << reply->errorString();
return;
}
const auto data = reply->readAll();
const auto document = QJsonDocument::fromJson(data, &parseError);
if (parseError.error) {
qCritical() << "Category::getCategory. Error at:" << parseError.offset
<< parseError.errorString();
return;
} else {
QString strReply = static_cast<QString>(data);
qDebug() << strReply;
}
}

我不知道是什么原因造成的。可以发送的数据有最大限制吗?或者某种超时?也许需要分块捕获更大的数据?

当然,也有可能 API 没有发送更大的数据集。作为测试,我对 node.js 解决方案进行了相同的尝试,发现该 API 确实适用于更大的集合。

知道我可以做些什么来找到这个问题的原因吗?

最佳答案

有时你会迷路,盯着错误的方向看。

我的代码确实有效,但我依赖于 qDebug() 来显示结果。我必须停止这样做,因为 qDebug() 有大小限制。因此它没有显示结果。

我永远不会忘记这个……;-)

关于c++ - QNetworkReply 响应是否有数据限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com