这篇文章会很短,就介绍一种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了。
结束语
好了,这篇文章,就是这么短。