需要QNetworkAccessManager PUT请求示例

时间:2015-07-17 00:32:14

标签: qt rest qt5

我一直在成功使用QNetworkAccessManager来获取和发布请求。

但我需要使用PUT请求更新和外部API。此PUT请求需要一个json字符串作为其发送以更新记录的主体的一部分。

我找不到任何使用QNetworkAccessManager的PUT请求的工作示例。

请帮助分享示例代码。

2 个答案:

答案 0 :(得分:2)

最后,我找到了一种在QNetworkAccessManager PUT请求中发送Json数据的方法。

我形成了所需的json数据并将其存储在QJsonDocument变量中。并在put请求中传递了该变量(在使用toJson()转换为utf-8编码的json文档之后)。

以下是我使用的工作测试代码,我认为这对尝试此操作的人有帮助。

QVariantMap testMapData["age"] = 35;
QJsonDocument testJsonData = QJsonDocument::fromVariant(testMapData);

QNetworkAccessManager manager;

QNetworkRequest request(QUrl("http://example/member/14"));
request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json"));

QNetworkReply* reply = manager.put(request, testJsonData.toJson());

答案 1 :(得分:0)

http://doc.qt.io/qt-5/qnetworkaccessmanager.html#put-3

您可以使用QNetworkAccessManager::put(const QNetworkRequest & request, const QByteArray & data)方法。

QNetworkAccessManager manager;
QByteArray someData = "data";
QNetworkRequest request(QUrl("http://example.com"));
QNetworkReply* reply = manager.put(request, someData);