Qt-ohjelmointi
Http PUT

Tässä esimerkissä esitetään kuinka Qt-sovelluksella muokataan book-taulun riviä.

  1. Lisää mainwindow.h tiedostoon private slots osioon:
    void onUpdateBookClicked();
    
  2. Lisää sovellukseen Push Button ja anna sille nimeksi btnUpdateBook. kytke sen clicked signaali slottiin onUpdateBookClicked (joko UI-editorissa tai koodissa).
  3. Kirjoita mainwindow.cpp tiedostoon slot-funktio. Tarkista sen kirjan id, jonka haluat muokata ja korvaa seuraavassa koodissa id 19 haluamallasi arvolla.
    void MainWindow::onUpdateBookClicked()
    {
        QJsonObject jsonObj;
        jsonObj.insert("name","Muokattu kirja");
        jsonObj.insert("author","Jussi Juonio");
        jsonObj.insert("isbn","xxx-yyy-zzzz");
    
        QString site_url="http://localhost:3000/book/19";
        QNetworkRequest request(site_url);
        request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    
        //WEBTOKEN ALKU
            QByteArray myToken="Bearer "+webToken;
            request.setRawHeader(QByteArray("Authorization"),(myToken));
        //WEBTOKEN LOPPU
    
        //luo manager konstruktorissa, jos tarvitset sitä muissa funktioissa
        manager = new QNetworkAccessManager(this);
    
        QJsonDocument jsonDoc(jsonObj);
        QNetworkReply *reply = manager->put(request, jsonDoc.toJson());
        connect(reply, &QNetworkReply::finished, this, [reply, this]() {
            // Tarkistetaan verkkovirheet
            if (reply->error() != QNetworkReply::NoError) {
                qWarning() << "Network error:" << reply->errorString();
                reply->deleteLater();
                return;
            }
    
            QByteArray response_data = reply->readAll();
            qDebug() << response_data;
    
            reply->deleteLater();
        });
    }
    

    Huomaa rakenne: Button-slotti (onUpdateBookClicked) on erillinen metodi, mutta HTTP-vastauksen käsittely tehdään lambda-funktiolla.



Toggle Menu