123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681 |
- #include "hkcamera.h"
- #include<iostream>
- #include <QDateTime>
- #include<QPushButton>
- #include<QLabel>
- #include<QMessageBox>
- #include <QJsonObject>
- #include <QTextCodec>
- using namespace std;
- void intrusiondetecproc(NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
- {
- //以当前时间作为文件名
- QDateTime datetime= QDateTime::currentDateTime();//获取系统当前的时间
- QString strtime = datetime.toString("yyyyMMddhhmmss");//格式化时间
- // QString qstrdir = "D:\\sxkyprjinfo\\idsimg";
- QString qstrdir = "./prjfiles/imgs/idsimg";
- QString qstrfilename = qstrdir + "/" + strtime + ".jpg";
- NET_VCA_RULE_ALARM struVcaAlarm = { 0 };
- memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));
- QString strdevip = struVcaAlarm.struDevInfo.struDevIP.sIpV4;
- //保存抓拍场景图片
- if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
- {
- HANDLE hFile;
- DWORD dwReturn;
- hFile = CreateFile(QString(qstrfilename).toStdWString().data(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE)
- {
- return;
- }
- BOOL wf = WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
- if(!wf){
- int ret = GetLastError();
- return;
- }
- CloseHandle(hFile);
- hFile = INVALID_HANDLE_VALUE;
- }
- WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;
- switch (wEventType)
- {
- case ENUM_VCA_EVENT_INTRUSION: //区域入侵报警
- {
- std::cout << "camera_SavePicture save pic :" << "区域入侵报警" ;
- QJsonObject jsonret = ((hkcamera*)pUser)->PostRequestWithFile(qstrfilename, strdevip, ENUM_VCA_EVENT_INTRUSION);
- QJsonValue code = jsonret.value("code");
- if(code == 0 ){
- //发布区域入侵消息
- QJsonObject jsonpublish;
- QJsonValue fileUrl = jsonret.value("fileUrl");
- jsonpublish.insert("fileUrl", fileUrl);
- QString qsMessage = QString(QJsonDocument(jsonpublish).toJson());
- // mqttgoaf* ptet =((hkcamera*)pUser)->pmqttgoaf;
- // ptet->mqttpublish("topic/camera/alarm", "qsMessage");
- }
- break;
- }
- default:
- {
- std::cout << "其他报警,报警信息类型: " <<wEventType ;
- break;
- }
- }
- }
- void licenseplatedetecproc(NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
- {
- //以当前时间作为文件名
- QDateTime datetime= QDateTime::currentDateTime();//获取系统当前的时间
- QString strtime = datetime.toString("yyyyMMddhhmmss");//格式化时间
- // QString qstrdir = "D:\\sxkyprjinfo\\minertransimg";// ./cfg/sxkyprj.cfg
- QString qstrdir = "./prjfiles/imgs/minertransimg";
- QString qstrfilename = qstrdir + "/" + strtime + ".jpg";
- QString qstrfilenamesmall = qstrdir + "/" + strtime + "small.jpg";
- NET_DVR_ALARMER struDvrAlarm = { 0 };
- memcpy(&struDvrAlarm, pAlarmer, sizeof(NET_DVR_ALARMER));
- QString strdevip = struDvrAlarm.sDeviceIP;
- std::cout << "licenseplatedetecproc strdevip :" << strdevip.toStdString();
- NET_DVR_PLATE_RESULT struPlateResult = { 0 };
- memcpy(&struPlateResult, pAlarmInfo, sizeof(NET_DVR_PLATE_RESULT ));
- printf("车牌号: %s\n", struPlateResult.struPlateInfo.sLicense);//车牌号
- QString sLicense = QTextCodec::codecForName("GB2312")->toUnicode(struPlateResult.struPlateInfo.sLicense);
- // QString sLicense1 = struPlateResult.struPlateInfo.sLicense;
- // QString sLicense2 = QString(QString::fromLocal8Bit(struPlateResult.struPlateInfo.sLicense));
- // QString sLicense3 = QObject::trUtf8(struPlateResult.struPlateInfo.sLicense);
- // QString strT3 = QTextCodec::codecForName("UTF-8")->toUnicode(struPlateResult.struPlateInfo.sLicense);
- // QString sLicense5 = QString(QLatin1String(struPlateResult.struPlateInfo.sLicense));
- // QString sLicense6 = QString(QLatin1String(struPlateResult.struPlateInfo.sLicense));
- // std::cout << "licenseplatedetecproc sLicense :" << struPlateResult.struPlateInfo.sLicense ;
- HANDLE hFile;
- // HANDLE hFilesmall;
- DWORD dwReturn;
- //保存场景图
- // if (struPlateResult.dwPicLen != 0 && struPlateResult.byResultType == 1)
- // {
- // hFile = CreateFile(QString(qstrfilename).toStdWString().data(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- // if (hFile == INVALID_HANDLE_VALUE)
- // {
- // std::cout << "licenseplatedetecproc CreateFile :" << " fail" ;
- // return;
- // }
- // BOOL wf = WriteFile(hFile, struPlateResult.pBuffer1,struPlateResult.dwPicLen, &dwReturn, NULL);
- // if(!wf){
- // int ret = GetLastError();
- // std::cout << "licenseplatedetecproc WriteFile error :" << ret ;
- // }
- // std::cout << "licenseplatedetecproc WriteFile :" << " ok" ;
- // }
- //车牌小图片
- // if (struPlateResult.dwPicPlateLen != 0 && struPlateResult.byResultType == 1)
- // {
- // hFilesmall = CreateFile(QString(qstrfilenamesmall).toStdWString().data(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- // if (hFilesmall == INVALID_HANDLE_VALUE)
- // {
- // return;
- // }
- // BOOL wf = WriteFile(hFilesmall, struPlateResult.pBuffer1,struPlateResult.dwPicLen, &dwReturn, NULL);
- // if(!wf){
- // int ret = GetLastError();
- // }
- // }
- //相关联的重量评估摄像头抓拍图片
- QString qsip = ((hkcamera*)pUser)->cameramatchmap.value(strdevip);
- LONG userid = ((hkcamera*)pUser)->camerauseridmap.value(qsip);
- if(userid!=-1)
- {
- NET_DVR_JPEGPARA IpJpegPara2;
- IpJpegPara2.wPicQuality=0;
- IpJpegPara2.wPicSize=0xff;
- // QDateTime current_date_time =QDateTime::currentDateTime();
- // QString current_date =current_date_time.toString("yyyy-MM-dd_hh-mm-ss_zzz");
- // current_date="D:\\Picture\\"+current_date+".jpg";//保存地址,要事先设置好文件夹
- char* fileName;
- QByteArray ba = qstrfilename.toLatin1(); // must
- fileName=ba.data();
- if(NET_DVR_CaptureJPEGPicture(userid,1,&IpJpegPara2,fileName)==false)
- {
- qDebug() << "NET_DVR_CaptureJPEGPicture error;" << "error number is " << NET_DVR_GetLastError();
- return;
- }
- qDebug() <<"Capture Success!"<<endl;
- }
- ((hkcamera*)pUser)->PostFileWithlicense(qstrfilename, strdevip, sLicense);
- }
- void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
- {
- int i = 0;
- switch (lCommand)
- {
- case COMM_ALARM_RULE: //异常行为识别报警信息 COMM_ALARM_V30
- case COMM_ALARM_V30:
- {
- intrusiondetecproc( pAlarmer, pAlarmInfo, dwBufLen, pUser);
- break;
- }
- case COMM_UPLOAD_PLATE_RESULT:
- {
- licenseplatedetecproc(pAlarmer, pAlarmInfo, dwBufLen, pUser);
- }
- default:
- {
- // printf("其他报警,报警信息类型: 0x%x\n", lCommand);
- std::cout << "其他报警,报警信息类型: " <<lCommand ;
- break;
- }
- }
- return;
- }
- hkcamera::hkcamera(QObject *parent) : QObject(parent)
- {
- /*注:多台设备对接时也只需要调用一次设置一个回调函数,不支持不同设备的事件在不同的回调函数里面返回*/
- //NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);
- // NET_DVR_SetDVRMessageCallBack_V30(cbMessageCallback, this);
- }
- QStringList hkcamera:: getallcameralocations()
- {
- QStringList list;
- for (const QString &key : camerainfomap.keys())
- {
- list.append(key);
- }
- return list;
- }
- void hkcamera:: inicamera(QByteArray jsonData)
- {
- // QFile file("D:/sxkyprjinfo/cfg/sxkyprj.cfg");//.cfg为文本文件
- // QByteArray jsonData;
- // if(file.open(QIODevice::ReadOnly)){
- // jsonData = file.readAll();
- // file.close();
- // }
- // else {
- // }
- QJsonDocument jsonDocu = QJsonDocument::fromJson(jsonData);
- if(jsonDocu.isObject()){
- QJsonObject objroot = jsonDocu.object();
- QJsonValue cameracfgvalue = objroot.value("cameracfg");
- if(cameracfgvalue.isArray()){
- QJsonArray cameracfgarray = cameracfgvalue.toArray();
- for(int i = 0; i < cameracfgarray.count(); ++i){
- QJsonObject cameracfgobj = cameracfgarray.at(i).toObject();
- QJsonObject *pcamerainfoobj = new QJsonObject(cameracfgobj);
- camerainfomap.insert(cameracfgobj.value("location").toString(), *pcamerainfoobj);
- QString ip;
- int port;
- QString account;
- QString password;
- int function;
- ip = cameracfgobj.value("ip").toString();
- port = cameracfgobj.value("port").toInt();
- account = cameracfgobj.value("account").toString();
- password = cameracfgobj.value("password").toString();
- function = cameracfgobj.value("function").toInt();
- LONG userid = connect( ip, port, account, password, function);
- camerauseridmap.insert(ip, userid);
- }
- }
- QJsonValue cameramatchvalue = objroot.value("cameramatch");
- if(cameramatchvalue.isArray()){
- QJsonArray cameramatcharray = cameramatchvalue.toArray();
- for(int i = 0; i < cameramatcharray.count(); ++i){
- QJsonObject cameramatchobj = cameramatcharray.at(i).toObject();
- QStringList keys = cameramatchobj.keys();
- for(QString key : keys){
- cameramatchmap.insert(key, cameramatchobj.value(key).toString());
- }
- }
- }
- }
- }
- BOOL hkcamera::savepic(QString filename)
- {
- if(-1 == m_playhandle)
- {
- return false;
- }
- QString capImagePath = filename;
- QDir m_capImagePath(capImagePath);
- if (m_capImagePath.exists())
- {
- QFile::remove(capImagePath);
- }
- char* savefilename;
- QByteArray bytefilename = filename.toLatin1();
- savefilename = bytefilename.data();
- //保存为jpg格式
- NET_DVR_SetCapturePictureMode(JPEG_MODE);
- bool pic_status = NET_DVR_CapturePicture(m_playhandle, savefilename);
- if (pic_status)
- {
- std::cout << "camera_SavePicture save pic :" << savefilename << "success";
- }
- else
- {
- std::cout << "camera_SavePicture save pic :" << savefilename << "false";
- }
- return pic_status;
- }
- LONG hkcamera::connect(QString ip, int port, QString name, QString password, int function)
- {
- char* ch_ip;
- char* ch_name;
- char* ch_password;
- QByteArray ba_ip = ip.toLatin1();
- QByteArray ba_name = name.toLatin1();
- QByteArray ba_password = password.toLatin1();
- ch_ip = ba_ip.data();
- ch_name = ba_name.data();
- ch_password = ba_password.data();
- //初始化SDK
- bool isok = NET_DVR_Init();
- if (isok == false)
- {
- std::cout << "NET_DVR_Init error;error number is " << NET_DVR_GetLastError();
- return false;
- }
- //设置连接时间与重连时间
- NET_DVR_SetConnectTime(2000, 1);
- NET_DVR_SetReconnect(10000, true);
- //登录参数,包括设备地址、登录用户、密码等
- NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
- struLoginInfo.bUseAsynLogin = 0; //同步登录方式
- strcpy(struLoginInfo.sDeviceAddress, ch_ip); //设备IP地址
- struLoginInfo.wPort = 8000; //设备服务端口
- strcpy(struLoginInfo.sUserName, ch_name); //设备登录用户名
- strcpy(struLoginInfo.sPassword, ch_password); //设备登录密码
- //设备信息, 输出参数
- NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
- long lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
- if (lUserID < 0)
- {
- std::cout << "NET_DVR_Login error;" << "error number is " << NET_DVR_GetLastError();
- printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
- NET_DVR_Cleanup();
- return lUserID;
- }
- if(0 == function){
- return lUserID;
- }
- //能力集
- // NET_DVR_SNAP_ABILITY struDecoderCapability;
- // BOOL babb = NET_DVR_GetDeviceAbility(lUserID,SNAPCAMERA_ABILITY,nullptr,0,(char *)&struDecoderCapability, sizeof(struDecoderCapability));
- // DWORD dwerror = NET_DVR_GetLastError();
- //设置报警回调函数
- // /*注:多台设备对接时也只需要调用一次设置一个回调函数,不支持不同设备的事件在不同的回调函数里面返回*/
- // //NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);
- NET_DVR_SetDVRMessageCallBack_V30(cbMessageCallback, this);
- //启用布防
- LONG lHandle;
- NET_DVR_SETUPALARM_PARAM struAlarmParam = { 0 };
- struAlarmParam.dwSize = sizeof(struAlarmParam);
- //struSetupParam.dwSize = sizeof(NET_DVR_SETUPALARM_PARAM);
- //上传报警信息类型:0-老报警信息(NET_DVR_PLATE_RESULT), 1-新报警信息(NET_ITS_PLATE_RESULT)
- struAlarmParam.byAlarmInfoType = 1;
- struAlarmParam.byLevel = 1;//布防优先级:0- 一等级(高),1- 二等级(中),2- 三等级(低)
- //bySupport 按位表示,值:0 - 上传,1 - 不上传; bit0 - 表示二级布防是否上传图片;
- //其他报警布防参数不需要设置,不支持
- //lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
- lHandle = NET_DVR_SetupAlarmChan_V30(lUserID);
- if (lHandle < 0)
- {
- printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
- NET_DVR_Logout(lUserID);
- NET_DVR_Cleanup();
- }
- std::cout << "Login userID:" << lUserID;
- m_userid = lUserID;
- return lUserID;
- }
- BOOL hkcamera::displaypic(HWND hWnd)
- {
- NET_DVR_PREVIEWINFO struPlayInfo = { 0 }; //初始化
- struPlayInfo.hPlayWnd = hWnd;//需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空
- struPlayInfo.lChannel = 1;//预览通道号
- struPlayInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推
- struPlayInfo.dwLinkMode = 0;//0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTP
- struPlayInfo.bBlocked = 1;//0- 非阻塞取流,1- 阻塞取流
- LONG IRealPlayHandle = NET_DVR_RealPlay_V40(m_userid, &struPlayInfo, NULL, NULL);
- if (IRealPlayHandle < 0)
- {
- std::cout << "NET_DVR_RealPlay_V40 error;error number " << NET_DVR_GetLastError();
- NET_DVR_Logout(m_userid);
- m_playhandle = IRealPlayHandle;
- return false;
- }
- else
- {
- m_playhandle = IRealPlayHandle;
- return true;
- }
- }
- void hkcamera::stopdisplaypic()
- {
- NET_DVR_StopRealPlay(m_playhandle);
- return;
- }
- QJsonObject hkcamera:: PostRequestWithFile(QString filePath, QString devip, int eventtype )
- {
- QJsonObject qjsonret;
- //生成对应的网址请求
- QFileInfo fileInfo(filePath);
- QString fileName =fileInfo.fileName();
- QFile* inputFile = new QFile(filePath);
- inputFile->open(QIODevice::ReadOnly);
- //multipart请求
- QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
- //文件块
- QHttpPart filePart;
- filePart.setHeader(QNetworkRequest::ContentDispositionHeader,
- QVariant(QString("form-data; name=\"file\";filename=\"%1\"").arg(fileName)));
- filePart.setBodyDevice(inputFile);
- inputFile->setParent(multiPart);
- multiPart->append(filePart);
- QHttpPart paramer1Part;
- paramer1Part.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"devip\""));
- paramer1Part.setBody(devip.toUtf8());
- multiPart->append(paramer1Part);
- QHttpPart paramer2Part;
- paramer2Part.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"eventtype\""));
- QString streventtype = QString::number(eventtype);
- paramer2Part.setBody(streventtype.toUtf8());
- multiPart->append(paramer2Part);
- //生成对应的网址请求
- QNetworkRequest request;
- QString scheme = "http";
- //QString serverAddr = "192.168.3.5";
- QString serverAddr = "39.104.63.156";
- QString port = "1688";
- QString requestHeader = scheme + QString("://") + serverAddr + QString(":") + port;
- QString fullRequest = requestHeader + "/goaf/sensordata/uploadHikFile";
- request.setUrl(QUrl(fullRequest));
- //发送请求
- QNetworkAccessManager manager;
- QNetworkReply *reply = manager.post(request,multiPart);
- multiPart->setParent(reply);
- QEventLoop eventLoop;
- QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)),&eventLoop, SLOT(quit()));
- eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
- if(reply->error() != QNetworkReply::NoError)
- {
- qjsonret.insert("code", reply->error());
- return qjsonret;
- }
- //解析返回的Json结果
- QByteArray replyData = reply->readAll();
- QJsonParseError json_error;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(replyData, &json_error));
- if(json_error.error != QJsonParseError::NoError)
- {
- qjsonret.insert("code", -1);
- return qjsonret;
- }
- QJsonObject rootObj = jsonDoc.object();
- //QString codeStr = rootObj.value("code").toString();
- if(rootObj.value("code") == 0)
- {
- QJsonValue rootdata = rootObj.value("data");
- QJsonObject datobj = rootdata.toObject();
- QString codeStr = datobj.value("fileUrl").toString();
- qjsonret.insert("code", 0);
- qjsonret.insert("fileUrl", codeStr);
- return qjsonret;
- }
- else
- {
- //请求失败对对应的处理
- qjsonret.insert("code", 1);
- return qjsonret;
- }
- }
- void hkcamera:: PostFileWithlicense(QString filePath, QString devip, QString slicense )
- {
- QJsonObject qjsonret;
- //生成对应的网址请求
- QFileInfo fileInfo(filePath);
- QString fileName =fileInfo.fileName();
- QFile* inputFile = new QFile(filePath);
- inputFile->open(QIODevice::ReadOnly);
- //multipart请求
- QHttpMultiPart* multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
- //文件块
- QHttpPart filePart;
- filePart.setHeader(QNetworkRequest::ContentDispositionHeader,
- QVariant(QString("form-data; name=\"file\";filename=\"%1\"").arg(fileName)));
- filePart.setBodyDevice(inputFile);
- inputFile->setParent(multiPart);
- multiPart->append(filePart);
- QHttpPart paramer1Part;
- paramer1Part.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"devip\""));
- paramer1Part.setBody(devip.toUtf8());
- multiPart->append(paramer1Part);
- QHttpPart paramer2Part;
- paramer2Part.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"license\""));
- paramer2Part.setBody(slicense.toUtf8());
- multiPart->append(paramer2Part);
- QHttpPart paramer3Part;
- QString ocid = "406283";
- paramer3Part.setHeader(QNetworkRequest::ContentDispositionHeader,QVariant("form-data; name=\"ocid\""));
- paramer3Part.setBody(ocid.toUtf8());
- multiPart->append(paramer3Part);
- //生成对应的网址请求
- QNetworkRequest request;
- QString scheme = "http";
- // QString serverAddr = "192.168.3.5";
- QString serverAddr = "39.104.63.156";
- QString port = "1888";
- QString requestHeader = scheme + QString("://") + serverAddr + QString(":") + port;
- QString fullRequest = requestHeader + "/trans/allinfo/uploadHikFile";
- request.setUrl(QUrl(fullRequest));
- //发送请求
- QNetworkAccessManager manager;
- QNetworkReply *reply = manager.post(request,multiPart);
- multiPart->setParent(reply);
- QEventLoop eventLoop;
- QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)),&eventLoop, SLOT(quit()));
- eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
- if(reply->error() != QNetworkReply::NoError)
- {
- qjsonret.insert("code", reply->error());
- return ;
- }
- //解析返回的Json结果
- QByteArray replyData = reply->readAll();
- QJsonParseError json_error;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(replyData, &json_error));
- if(json_error.error != QJsonParseError::NoError)
- {
- qjsonret.insert("code", -1);
- return ;
- }
- QJsonObject rootObj = jsonDoc.object();
- //QString codeStr = rootObj.value("code").toString();
- if(rootObj.value("code") == 0)
- {
- QJsonValue rootdata = rootObj.value("data");
- QJsonObject datobj = rootdata.toObject();
- QString codeStr = datobj.value("fileUrl").toString();
- qjsonret.insert("code", 0);
- qjsonret.insert("fileUrl", codeStr);
- return ;
- }
- else
- {
- //请求失败对对应的处理
- qjsonret.insert("code", 1);
- return ;
- }
- }
- void hkcamera::logout()
- {
- if(0 != m_userid)
- {
- NET_DVR_Logout(m_userid);
- m_userid = 0;
- m_playhandle = -1;
- }
- }
|