[英]Is there a data limit on QNetworkReply responses?
我正在Qt中編寫一個類,該類從Bricklink API(LEGO數據庫)中檢索信息。 它使用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()
有大小限制。 因此,它沒有顯示結果。
我永遠不會忘記這個... ;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.