簡體   English   中英

QNetworkReply響應是否有數據限制?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM