2016-07-26 4 views
0

Qtフレームワークを使用してURLからJSONデータを取得しようとしています。取得リクエストからの返品に関する問題が発生しました。私は私の問題に関して複数の質問をしてきましたが、どの解決法も私の問題を解決していません。Qt Network Access Manager 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 ::接続:(ヌル):: QNativeWifiEngineにaboutToQuit():: 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}"