簡體   English   中英

如何從QNetworkReply讀取數據?

[英]How do I read the data from QNetworkReply?

在QWebPage之前,如何從特定URL的QNetworkReply響應中讀取數據? 但是當發出finish finished()信號時,QWebPage已經讀取了答復,因此連接readyRead()或調用reply->readAll()不會返回任何內容。 我在自己的QWebPage類中嘗試了重載acceptNavigationRequest()方法,如下所示:

bool webPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type)
{
    //qDebug() << "filename = " << request.rawHeader("content-disposition");

    if(request.url().path() == QStringLiteral("download.php"))
    {
        QNetworkReply *reply = networkAccessManager()->get(request);
        QFile file;
        file.setFileName(filename);
        if(!file.open(QIODevice::ReadWrite))
        {
            /* handle error */
        }
        file.write(reply->readAll());
        file.close();
        return false;
    }

但是我無法回復工作...返回的回復無效(甚至不返回http狀態代碼,我知道這意味着發送的http請求無效,但我不知道為什么)。

歡迎采用不同的方法來解決此問題!

通過使用帶有lambda表達式的完成的廣告位,您可以執行以下操作:-

QNetworkReply* reply = networkAccessManager()->get(request);

connect(reply, &QNetworkReply::finished, [=]() {

    if(reply->error() == QNetworkReply::NoError)
    {
        QByteArray response = reply->readAll();
        // do something with the data...
    }
    else // handle error
    {
      qDebug(pReply->errorString());
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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