簡體   English   中英

Qt網絡訪問管理器JSON獲取響應

[英]Qt Network Access Manager JSON Get Response

我正在嘗試使用Qt框架從URL中提取JSON數據,並且在從get請求中獲取返回值時遇到了一些問題。 我已經看到有關我的問題的多個問題,但是給定的解決方案都無法解決我的問題。

因此,我有一個按鈕,一旦單擊它就應該執行get請求。 這是我的代碼。

//When button is pressed
void Test1::onClickCapture()
{
    qDebug() << "Capture Clicked!!";
    toPopulate();
}

//Code to execute the connection
void Test1::toPopulate() {
    qDebug() << "Populating!";

    QNetworkAccessManager* manager = new QNetworkAccessManager(this);
    QNetworkRequest request;
    QUrl url("https://jsonplaceholder.typicode.com/posts/1");
    request.setUrl(url);
    QNetworkReply *reply = manager->get(request);
    connect(reply, &QNetworkReply::readyRead, this, &Test1::onResult);
}

//And finally, my onResult slot
void Test1::onResult() {
    reply->deleteLater();
    if (reply->error() != QNetworkReply::NoError) {
        return;
    }
    qDebug() << "Response!";
}

每當我調試代碼時,它就永遠不會進入我的onResult插槽。

我也收到此錯誤,可能是相關的。

QObject :: connect:無法將(null):: aboutToQuit()連接到QNativeWifiEngine :: closeHandle()

我已經修改了您的代碼。 對我來說工作正常:

//Code to execute the connection
void MainWindow::toPopulate() {
    qDebug() << "Populating!";

    QNetworkAccessManager* manager = new QNetworkAccessManager(this);
    QNetworkRequest request;
    QUrl url("https://jsonplaceholder.typicode.com/posts/1");
    request.setUrl(url);
    QNetworkReply *reply = manager->get(request);
    connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloading(qint64,qint64)));
    connect(reply, SIGNAL(finished()), this, SLOT(onResult()));
}

void MainWindow::downloading(qint64 bytesReceived, qint64 bytesTotal) {
    qDebug() << "Downloading " << bytesReceived/bytesTotal*100 << " %.";
}

//And finally, my onResult slot
void MainWindow::onResult() {
    QNetworkReply* reply = qobject_cast<QNetworkReply*> (QObject::sender());
    if (reply->error() != QNetworkReply::NoError) {
        qDebug() << "Error downloading. " << reply->errorString();
        return;
    }
    reply->deleteLater();
    qDebug() << "Response! " << reply->readAll();
}

結果:

Populating!
Downloading  -29200  %.
Downloading  100  %.
Response!  "{\n  \"userId\": 1,\n  \"id\": 1,\n  \"title\": \"sunt aut facere repellat provident occaecati excepturi optio reprehenderit\",\n  \"body\": \"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto\"\n}"

暫無
暫無

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

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