Search code examples
qthttprequestqnetworkaccessmanagerqtnetworkqnetworkrequest

QNetworkAccessManager - How to send "PATCH" request


I am trying to send a "PATCH" request to my firebase application.As far as I read QNetworkManager doesn't support "Patch" request.

How can I send "PATCH" request ?


Solution

  • So we are clear that there is no method in QNetworkAccessManager named "patch" Therefore I have used "sendCustomRequest" but with QBuffer. Because QNetworkManager requires a QIODevice object.

    QString destination="";
    currentNode.replace(QString("/").append(latestNode),"");
    destination
            .append(host)
            .append(currentNode)
            .append(".json");
    QString jsonString=QString(QString("{").append("\"").append(latestNode).append("\"").append(":").append("\"").append(str).append("\"").append(QString("}")));
    QNetworkRequest request(destination);
    request.setHeader(QNetworkRequest::ContentTypeHeader,
        "application/x-www-form-urlencoded");
    qDebug()<<jsonString;
    QBuffer *buffer=new QBuffer();
    buffer->open((QBuffer::ReadWrite));
    buffer->write(jsonString.toUtf8());
    buffer->seek(0);
    manager->sendCustomRequest(request,"PATCH",buffer);
    qDebug()<<"posted";