Qt 使用Http协议通信
介绍
使用QT进行应用开发时,有时候需要进行客户端和服务端的网络通信,网络通信常用的一种协议就是http协议。QT对http协议进行了封装,下面将介绍两种http通信方式的使用。
在使用http时需要在pro文件中添加对应的模块。
QT += networkhttp主要两种通信方式为get和post两种
1.多个独立参数GET请求
1 int NormalGetRequest(QString paramer1, QString paramer2) 2 24 25 //解析返回的Json结果 26 QByteArray replyData = reply>readAll(); 27 QJsonParseError json_error; 28 QJsonDocument jsonDoc(QJsonDocument::frJson(replyData, &json_error)); 29 if(json_error.error != QJsonParseError::NoError) 30 33 QJsonObject rootObj = jsonDoc.object(); 34 QString codeStr = rootObj.value("code").toString(); 35 if (codeStrpare("200") == 0) 36 42 return 0; 43 } 44 else 45 49 }2.参数数组GET请求
1 int GetRequestWithArray(QVector<QString> m_filePathVector) 2 11 12 QJsonDocument document; 13 document.setArray(array); 14 QString arrayString = document.toJson(QJsonDocument::Cpact); 15 16 //生成对应的网络请求 17 QNetworkRequest request; 18 QString scheme = "http"; 19 QString serverAddr = "192.168.0.1"; 20 QString port = "80"; 21 QString requestHeader = scheme + QString("://") + serverAddr + QString(":") + port; 22 QString fullRequest = requestHeader + QString("/api/vi/user/getarray?paramers=%1").arg(arrayString); 23 request.setUrl(QUrl(fullRequest)); 24 25 //获取错误 26 QNetworkAccessManager manager; 27 QNetworkReply *reply = manager.get(request); 28 QEventLoop eventLoop; 29 QObject::connect(reply, SIGNAL(finished()),&eventLoop, SLOT(quit())); 30 eventLoop.exec(QEventLoop::ExcludeUserInputEvents); 31 if(reply>error() != QNetworkReply::NoError) 32 35 36 //解析返回的Json结果 37 QByteArray replyData = reply>readAll(); 38 QJsonParseError json_error; 39 QJsonDocument jsonDoc(QJsonDocument::frJson(replyData, &json_error)); 40 if(json_error.error != QJsonParseError::NoError) 41 44 QJsonObject rootObj = jsonDoc.object(); 45 QString codeStr = rootObj.value("code").toString(); 46 if (codeStrpare("200") == 0) 47 53 return 0; 54 } 55 else 56 60 }3.上传参数数据POST请求
1 int NormalPostRequest(QString paramer1, QString paramer2) 2 30 31 32 //解析返回的Json结果 33 QByteArray replyData = reply>readAll(); 34 QJsonParseError json_error; 35 QJsonDocument jsonDoc(QJsonDocument::frJson(replyData, &json_error)); 36 if(json_error.error != QJsonParseError::NoError) 37 40 QJsonObject rootObj = jsonDoc.object(); 41 QString codeStr = rootObj.value("code").toString(); 42 if (codeStrpare("200") == 0) 43 49 return 0; 50 } 51 else 52 56 }4.上传参数和文件POST请求
1 int PostRequestWithFile(QString paramer1, QString paramer2,QString filePath) 2 54 55 //解析返回的Json结果 56 QByteArray replyData = reply>readAll(); 57 QJsonParseError json_error; 58 QJsonDocument jsonDoc(QJsonDocument::frJson(replyData, &json_error)); 59 if(json_error.error != QJsonParseError::NoError) 60 QJsonObject rootObj = jsonDoc.object(); 64 QString codeStr = rootObj.value("code").toString(); 65 if (codeStrpare("200") == 0) 66 72 return 0; 73 } 74 else 75 79 }5.下载文件GET请求
1 int DownloadFileFrWeb(QString fileUrl,QString&fileSavePath) 2 22 23 //保存下载的文件 24 QFile file(fileSavePath); 25 if(!file.open(QIODevice::WriteOnly)) 26 29 file.write(reply>readAll()); 30 filelose(); 31 return 0; 32 }上一篇:Qt Creator配置clang-format格式化代码插件
下一篇:ModScan32 使用基础
Qt
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?