2016-07-26 55 views
0

我想從使用Qt框架的URL中拉取JSON數據,並且遇到了一些與獲取請求返回相關的問題。我已經看到了多個關於我的問題的問題,但沒有一個給出的解決方案已經解決了我的問題。Qt網絡訪問管理器JSON獲取響應

所以我有一個按鈕,一旦點擊,應該執行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 ::連接:無法連接(空):: aboutToQuit()來QNativeWifiEngine :: CloseHandle的()

回答

0

我已經修改了你的代碼。它的工作對我罰款:

//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}"