使用Qt网络库QNetworkAccessManager发送post请求

这篇文章会很短,就介绍一种QNetworkAccessManager发送post请求的简单方式(注意:方式有很多,下面只是介绍我个人认为最简洁直接的方式)。

如何设置请求头

使用QNetworkRequest的setRawHeader方法,你可以很直接的用键值对的方式设置:

//这是一个向后台提交反馈的api请求
QNetworkRequest req(QUrl::fromUserInput(QString("%1/api/software/feedback/create").arg(HsrCore::HSR_BASE_URL)));
// 下面是填充请求头
req.setRawHeader("Accept", "application/json");
req.setRawHeader("Content-Type", "application/json");
req.setRawHeader("X-Token", "xxxx这里是你的tokenxxxxxx");

设置请求体

这里使用Qt的json库,QJsonDocument, QJsonObject, QJsonArray等处理json的api

QJsonDocument doc;
QJsonObject jsonData;
jsonData.insert("email", "xxxxx@yyy.com");     // 设置email字段
jsonData.insert("content", tr("你的内容"));    // 设置内容字段
doc.setObject(jsonData);

发送请求

发送请求很简单了,使用QNetworkAccessManager的post方法即可,post方法有3个重载实现,这里我使用的是QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)这种重载方法,然后使用上面两个步骤的请求头req和请求体数据doc

m_app_controller_->httpMgr()->networkAccessMgr()->post(req, doc.toJson());

这里因为我做了封装,networkAccessMgr()返回的就是QNetworkAccessManager实例,注意在这里发送的时候doc.toJson()方法很方便的将之前的json数据转换成QByteArray了。

结束语

好了,这篇文章,就是这么短。

 

 

1,621 次浏览

发表评论

电子邮件地址不会被公开。 必填项已用*标注