完成导航条,尚未Debug
This commit is contained in:
@ -5,29 +5,29 @@
|
||||
#include <QProcess>
|
||||
#include <QScreen>
|
||||
#include <QCryptographicHash>
|
||||
#include <wbemidl.h>
|
||||
#include "netio.h"
|
||||
#include "config.h"
|
||||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
#include <QtNetwork/QNetworkAccessManager>
|
||||
#include <QtNetwork/QNetworkRequest>
|
||||
#include <QEventLoop>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <QTimer>
|
||||
#include <cstring>
|
||||
#include <QJsonArray>
|
||||
#include <QSysInfo>
|
||||
#include <QStorageInfo>
|
||||
#include <comutil.h>
|
||||
#include <wbemidl.h>
|
||||
#include <iostream>
|
||||
#include <QGuiApplication>
|
||||
#include <wbemidl.h>
|
||||
#include <ctime>
|
||||
#pragma comment(lib, "wbemuuid.lib")
|
||||
#ifdef _DEBUG
|
||||
#pragma comment(lib, "Qt5Networkd.lib")
|
||||
#else
|
||||
#pragma comment(lib, "Qt5Network.lib")
|
||||
#endif
|
||||
#pragma comment(lib,"comsuppw.lib")
|
||||
//读取注册表获取MachineUUID
|
||||
//<EFBFBD><EFBFBD>ȡע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡMachineUUID
|
||||
inline QString getMachineGUID(){
|
||||
HKEY hKey;
|
||||
RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography",
|
||||
@ -44,64 +44,64 @@ RequestBodyBase::RequestBodyBase(){
|
||||
wchar_t unix_time[65]={0};
|
||||
wsprintf(unix_time,L"%ld",std::time(0));
|
||||
QString request_id=QString::fromWCharArray(unix_time);
|
||||
//打开配置文件
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
QFile *infFile=new QFile(".\\config\\information.cfg");
|
||||
if(!infFile->open(QIODevice::ReadOnly|QIODevice::Text)){
|
||||
QMessageBox::warning(nullptr,"错误","无法打开配置文件");
|
||||
QMessageBox::critical(nullptr,QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"));
|
||||
delete infFile;
|
||||
exit(1);
|
||||
}
|
||||
//读取配置文件
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
QByteArray bytes;
|
||||
bytes=infFile->readAll();
|
||||
infFile->close();
|
||||
delete infFile;
|
||||
//转化位json
|
||||
//ת<EFBFBD><EFBFBD>Ϊjson
|
||||
qJsonDocument=QJsonDocument::fromJson(bytes);
|
||||
if(qJsonDocument.isObject()){
|
||||
//读取数据,写入对应字段
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ֶ<EFBFBD>
|
||||
QJsonObject obj_root=qJsonDocument.object();
|
||||
if(obj_root.value("product")==QJsonValue::Undefined){
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
exit(1);
|
||||
}
|
||||
product=obj_root.value("product").toString();
|
||||
if(obj_root.value("partner_id")==QJsonValue::Undefined){
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
exit(1);
|
||||
}
|
||||
partner_id=obj_root.value("partner_id").toString();
|
||||
if(obj_root.value("release")==QJsonValue::Undefined){
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
exit(1);
|
||||
}
|
||||
release=obj_root.value("release").toString();
|
||||
if(obj_root.value("version")==QJsonValue::Undefined){
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
exit(1);
|
||||
}
|
||||
version=obj_root.value("version").toString();
|
||||
if(obj_root.value("device_id")==QJsonValue::Undefined){
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
||||
exit(1);
|
||||
}
|
||||
device_id=obj_root.value("device_id").toString();
|
||||
}else{
|
||||
//处理错误
|
||||
QMessageBox::warning(nullptr,"错误","配置文件损坏");
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QMessageBox::warning(nullptr,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
exit(1);
|
||||
}
|
||||
//获取操作系统版本
|
||||
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>汾
|
||||
os="Windows";
|
||||
OSVERSIONINFOEX os;
|
||||
os.dwOSVersionInfoSize=sizeof(os);
|
||||
GetVersionEx((OSVERSIONINFO *)&os);
|
||||
switch(os.dwMajorVersion){//主版本号
|
||||
case 5: //不兼容Windows 2000,因此5.x一定是Windows XP
|
||||
switch(os.dwMajorVersion){//<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD>
|
||||
case 5: //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Windows 2000<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5.xһ<78><D2BB><EFBFBD><EFBFBD>Windows XP
|
||||
os_version="Windows XP";
|
||||
break;
|
||||
case 6:
|
||||
switch(os.dwMinorVersion){ //次版本号
|
||||
switch(os.dwMinorVersion){ //<EFBFBD>ΰ汾<EFBFBD><EFBFBD>
|
||||
case 0:
|
||||
os_version="Windows Vista or Windows Server 2008";
|
||||
break;
|
||||
@ -117,39 +117,39 @@ RequestBodyBase::RequestBodyBase(){
|
||||
default:
|
||||
os_version="Unknown";
|
||||
}
|
||||
case 10: //这几个系统都是10.0
|
||||
case 10: //<EFBFBD>⼸<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>10.0
|
||||
os_version="Windows 10, Windows 11, Windows Server 2016 or Windows Server 2019";
|
||||
break;
|
||||
default:
|
||||
os_version="Unknown";
|
||||
}
|
||||
//如果device_id是空值
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>device_id<EFBFBD>ǿ<EFBFBD>ֵ
|
||||
if(device_id.isEmpty()){
|
||||
//读取MachineGUID并取MD5作为device_id
|
||||
//<EFBFBD><EFBFBD>ȡMachineGUID<EFBFBD><EFBFBD>ȡMD5<EFBFBD><EFBFBD>Ϊdevice_id
|
||||
QByteArray hash = QCryptographicHash::hash(getMachineGUID().toUtf8(), QCryptographicHash::Md5);
|
||||
device_id=hash.toHex();
|
||||
infFile=new QFile(".\\config\\information.cfg");
|
||||
if(!infFile->open(QIODevice::WriteOnly|QIODevice::Text)){
|
||||
//处理错误
|
||||
QMessageBox::warning(nullptr,"错误","无法覆写配置文件");
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QMessageBox::warning(nullptr, QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), QString::fromLocal8Bit("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"));
|
||||
infFile->close();
|
||||
delete infFile;
|
||||
exit(1);
|
||||
}
|
||||
//加入json序列
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
QJsonValue value=device_id;
|
||||
QJsonObject obj_root;
|
||||
obj_root.insert("device_id",value);
|
||||
qJsonDocument.setObject(obj_root);
|
||||
//写入配置文件
|
||||
//д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
infFile->write(qJsonDocument.toJson());
|
||||
//关闭文件;
|
||||
//<EFBFBD>ر<EFBFBD><EFBFBD>ļ<EFBFBD>;
|
||||
infFile->close();
|
||||
delete infFile;
|
||||
}
|
||||
QJsonValue requestId_json=QJsonValue(request_id);
|
||||
QJsonObject obj_root;
|
||||
//插入request_id
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>request_id
|
||||
obj_root.insert("request_id",requestId_json);
|
||||
qJsonDocument.setObject(obj_root);
|
||||
}
|
||||
@ -157,86 +157,90 @@ RequestBodyBase::RequestBodyBase(){
|
||||
|
||||
|
||||
void ConfigRequest::sendRequest(ConfigResponse *configResponse) {
|
||||
QTimer *timer = new QTimer(this);
|
||||
timer = new QTimer(this);
|
||||
QNetworkAccessManager *httpMgr = new QNetworkAccessManager();
|
||||
/* QFile *file=new QFile(".\\config\\config.cfg");
|
||||
if(!file->open(QIODevice::ReadOnly|QIODevice::Text)){
|
||||
QMessageBox::warning(nullptr,"错误","无法打开配置文件");
|
||||
QMessageBox::warning(nullptr,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>","<22><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
|
||||
file->close();
|
||||
delete file;
|
||||
exit(1);
|
||||
}*/
|
||||
QNetworkRequest requestInfo;
|
||||
//HTTP请求
|
||||
//请求头
|
||||
//HTTP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||
requestInfo.setUrl(QUrl(CONFIG_URL));
|
||||
requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
|
||||
//保存响应的变量
|
||||
QNetworkReply *reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//开启一个循环,直到超时或者获取到数据为止
|
||||
QEventLoop eventLoop;
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
||||
reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֹ
|
||||
connect(reply,&QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
|
||||
//设置定时器防止超时
|
||||
connect(timer,&QTimer::timeout,&eventLoop,&QEventLoop::quit);
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>ʱ
|
||||
connect(timer,&QTimer::timeout,this,&ConfigRequest::cancelDownload);
|
||||
timer->start(5000);
|
||||
//启动循环
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
|
||||
eventLoop.exec();
|
||||
delete httpMgr;
|
||||
QJsonDocument result;
|
||||
configResponse=new ConfigResponse;
|
||||
memset(configResponse,0,sizeof(*configResponse));
|
||||
//如果没有错误
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
|
||||
if(reply->error() == QNetworkReply::NoError) {
|
||||
result = QJsonDocument::fromJson(reply->readAll());
|
||||
}else{
|
||||
//如果有错误
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
|
||||
configResponse->succeed=false;
|
||||
delete reply;
|
||||
delete timer;
|
||||
return;
|
||||
}
|
||||
//如果数据完整
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(result.isObject()){
|
||||
QJsonObject obj_root=result.object();
|
||||
QJsonArray array;
|
||||
array = obj_root.value("menu").toArray();
|
||||
configResponse->menu=new Menu[array.count()];
|
||||
configResponse->menus=new QList<Menu>;
|
||||
auto i=0;
|
||||
for(auto value:array){
|
||||
QJsonObject object=value.toObject();
|
||||
configResponse->menu[i].img=object.value("img").toString();
|
||||
configResponse->menu[i].img_cover=object.value("img_cover").toString();
|
||||
configResponse->menu[i].title=object.value("title").toString();
|
||||
configResponse->menu[i].func=object.value("func").toString();
|
||||
configResponse->menu[i].url=object.value("url").toString();
|
||||
Menu menu;
|
||||
menu.img=object.value("img").toString();
|
||||
menu.img_cover=object.value("img_cover").toString();
|
||||
menu.title=object.value("title").toString();
|
||||
menu.func=object.value("func").toString();
|
||||
menu.url=object.value("url").toString();
|
||||
*configResponse->menus << menu;
|
||||
i++;
|
||||
}
|
||||
}else{
|
||||
//数据不完整
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
configResponse->succeed=false;
|
||||
delete reply;
|
||||
delete timer;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void RequestBodyBase::cancelDownload() {
|
||||
disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
|
||||
eventLoop.quit();
|
||||
reply->abort();
|
||||
}
|
||||
void RequestBodyBase::sendRequest() {
|
||||
QTimer *timer = new QTimer(this);
|
||||
timer = new QTimer(this);
|
||||
QNetworkAccessManager *httpMgr = new QNetworkAccessManager();
|
||||
QNetworkRequest requestInfo;
|
||||
//HTTP请求
|
||||
//请求头
|
||||
//HTTP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||
requestInfo.setUrl(QUrl(OP_URL));
|
||||
requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
|
||||
//保存响应的变量
|
||||
QNetworkReply *reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//开启一个循环,直到超时或者获取到数据为止
|
||||
QEventLoop eventLoop;
|
||||
connect(reply,&QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
|
||||
//设置定时器防止超时
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
||||
reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֹ
|
||||
connect(reply,&QNetworkReply::finished, this, &RequestBodyBase::cancelDownload);
|
||||
//<2F><><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>ʱ
|
||||
connect(timer,&QTimer::timeout,&eventLoop,&QEventLoop::quit);
|
||||
timer->start(5000);
|
||||
//启动循环
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
|
||||
eventLoop.exec();
|
||||
delete timer;
|
||||
delete httpMgr;
|
||||
@ -247,15 +251,15 @@ void RequestBodyBase::sendRequest() {
|
||||
DeviceRequest::DeviceRequest() : RequestBodyBase() {
|
||||
//CPU
|
||||
QString cpu = QSysInfo::currentCpuArchitecture();
|
||||
//内存大小
|
||||
//<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С
|
||||
MEMORYSTATUSEX status;
|
||||
status.dwLength = sizeof(status);
|
||||
GlobalMemoryStatusEx(&status);
|
||||
int ram = status.ullTotalPhys / 1024 / 1024;
|
||||
//硬盘大小
|
||||
//Ӳ<EFBFBD>̴<EFBFBD>С
|
||||
QStorageInfo storage = QStorageInfo::root();
|
||||
int disk = storage.bytesTotal() / static_cast<qulonglong>(1024 * 1024 * 1024);
|
||||
//显卡型号
|
||||
//<EFBFBD>Կ<EFBFBD><EFBFBD>ͺ<EFBFBD>
|
||||
QStringList gpus;
|
||||
BOOL success;
|
||||
DWORD deviceIndex = 0;
|
||||
@ -283,9 +287,9 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() {
|
||||
deviceIndex++;
|
||||
displayDevice.cb = sizeof(displayDevice);
|
||||
}
|
||||
//主板型号
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>
|
||||
QString motherboard = QSysInfo::prettyProductName();
|
||||
//WMI获取网卡型号
|
||||
//WMI<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>
|
||||
HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
if (FAILED(hr)) {
|
||||
std::cerr << "Failed to initialize COM library." << std::endl;
|
||||
@ -392,7 +396,7 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() {
|
||||
|
||||
pClassObj->Release();
|
||||
}
|
||||
//WMI获取声卡型号
|
||||
//WMI<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>
|
||||
hr = pSvc->ExecQuery(
|
||||
_bstr_t("WQL"),
|
||||
_bstr_t("SELECT * FROM Win32_SoundDevice"),
|
||||
@ -471,8 +475,8 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() {
|
||||
DISPLAY_DEVICE d = { sizeof(DISPLAY_DEVICE) };
|
||||
::EnumDisplayDevices(NULL, 0, &d, 0);
|
||||
QString monitor=QString::fromWCharArray(d.DeviceString, wcslen(d.DeviceString));
|
||||
//发送
|
||||
//构造JSON
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>JSON
|
||||
QJsonDocument *device=new QJsonDocument;
|
||||
QJsonObject *object=new QJsonObject;
|
||||
object->insert("CPU",QJsonValue(cpu));
|
||||
@ -510,22 +514,21 @@ DeviceRequest::DeviceRequest() : RequestBodyBase() {
|
||||
obj_root.insert("data",QString(device->toJson()));
|
||||
delete device;
|
||||
qJsonDocument.setObject(obj_root);
|
||||
QTimer *timer = new QTimer(this);
|
||||
timer = new QTimer(this);
|
||||
QNetworkAccessManager *httpMgr = new QNetworkAccessManager();
|
||||
QNetworkRequest requestInfo;
|
||||
//HTTP请求
|
||||
//请求头
|
||||
//HTTP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||||
requestInfo.setUrl(QUrl(DEVICE_URL));
|
||||
requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
|
||||
//保存响应的变量
|
||||
QNetworkReply *reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//开启一个循环,直到超时或者获取到数据为止
|
||||
QEventLoop eventLoop;
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
||||
reply = httpMgr->post(requestInfo,qJsonDocument.toJson());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊֹ
|
||||
connect(reply,&QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
|
||||
//设置定时器防止超时
|
||||
connect(timer,&QTimer::timeout,&eventLoop,&QEventLoop::quit);
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>ʱ
|
||||
connect(timer,&QTimer::timeout,this,&DeviceRequest::cancelDownload);
|
||||
timer->start(5000);
|
||||
//启动循环
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
|
||||
eventLoop.exec();
|
||||
delete httpMgr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user