QNetworkReply 响应是否有数据限制
Is there a data limit on QNetworkReply responses?
我正在用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++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 如何使用 C++ 中的 cpprestsdk 发布 json 数据并从本地服务器获取响应
- 如何从 HTTP 响应中删除垃圾数据
- QNetworkReply 响应是否有数据限制
- QTableView 不响应数据未聚焦时更改
- FastCGI发送图像数据作为响应C++
- 通过原始套接字接收"syn"数据包时,如何使用"syn ack"数据包进行响应?
- 将数据加载到内存中以获得更快的响应
- 响应标头和非HTTP数据的HTTP分离
- 如何在一个套接字上实现并行请求和响应的非阻塞客户端-服务器通信模型,而不存在数据竞争
- C++ 将数据发送到 PHP 并处理响应
- 使用libcurl c++将响应数据存储到post上的变量中