Qt 之 QNetworkAccessManager踏坑记录
Qt 之 QNetworkAccessManager踏坑记录
2021-06-13 11:33:39 阅读:229 来源: 互联网标签:Qt pconf list 网络 4G reply 踏坑 QNetworkAccessManager
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
项目背景
项目中,要用到QNetworkAccessManager 进行与云端的post、get、put请求,没考虑很多,就选择了Qt 的 QNetworkAccessManager模块,封装的很方便。但是因为是基于arm linux来开发的,切需要进行wifi和4G的网络切换,遇到了各种问题。
本项目踏坑是基于 QT 5.10.0版本,一个很冷门的版本。
一、常规用法 1
示例:
void ApiManager::sendApiLogin()
{
QUrl url(m_strApiHead + "iot-server/api/pen/device/login");
QList<QString> list;
DevConfig *pconf = DevConfig::GetInstance();
list.append("sn="+pconf->getSN());
list.append("token="+pconf->getTokenZ03());
list.append("local="+pconf->getLanguage());
qint64 stamp = pconf->getCurStampMS();
list.append(QString("stamp=%1").arg(stamp));
list.append("bt_mac="+pconf->getBtMac());
list.append("wifi_mac="+pconf->getWifiMac());
list.append("version="+pconf->getVersion());
list.sort();
QString checksum = pconf->getApiCheckSum(list,pconf->getSecret());
QUrlQuery postData;
postData.addQueryItem("sn", pconf->getSN());
postData.addQueryItem("token", pconf->getTokenZ03());
postData.addQueryItem("local", pconf->getLanguage());
postData.addQueryItem("stamp", QString("%1").arg(stamp));
postData.addQueryItem("sig",checksum);
postData.addQueryItem("wifi_mac", pconf->getWifiMac());
postData.addQueryItem("bt_mac", pconf->getBtMac());
postData.addQueryItem("version", pconf->getVersion());
qDebug()<< "post = " << postData.toString(QUrl::FullyEncoded).toUtf8();
