当前位置: 首页 > news >正文

建设银行怀柔支行营业部网站seo公司推广宣传

建设银行怀柔支行营业部网站,seo公司推广宣传,像素点建网站,如何制作旅游网站介绍 QT的HTTP模块封装的交互类&#xff0c;线程运行。使用时添加自己的业务逻辑即可 代码 头文件 /*** file httpcontroller.h* brief 云台相机的协议交互类* author xintong-zhou* date 2024-03-13*/#ifndef HTTPCONTROLLER_H #define HTTPCONTROLLER_H#include <QNet…

介绍

QT的HTTP模块封装的交互类,线程运行。使用时添加自己的业务逻辑即可

代码

头文件

/*** @file httpcontroller.h* @brief 云台相机的协议交互类* @author xintong-zhou* @date 2024-03-13*/#ifndef HTTPCONTROLLER_H
#define HTTPCONTROLLER_H#include <QNetworkReply>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QUrlQuery>
#include <QHttpMultiPart>
#include <QHttpPart>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QJsonValue>
#include <QCryptographicHash>
#include <QThread>class HttpWorker : public QObject
{Q_OBJECTpublic:HttpWorker();~HttpWorker();/*** @brief 某条信息的处理* @param object json对象*/void dealXXInfo(const QJsonObject &object);public slots:/*** @brief 执行请求* @param url 请求地址* @param arg 请求参数*/void slotPostHttpRequest(const QString &url, const QJsonObject &obj);/*** @brief 保存交互返回数据*/void slotReadyRead();void slotReplyFinished();/*** @brief 返回数据接收完毕分发处理* @param recvBuffer 接收到的json数据*/void slotRecvData(const QByteArray &recvBuffer);signals:/*** @brief 向上转发结果*/void sigResult();private:QNetworkAccessManager *m_pManager = nullptr;
};class HttpController : public QObject
{Q_OBJECT
public:explicit HttpController(QObject *parent = nullptr);~HttpController();/*** @brief 设置时间日期* @param datetime 时间日期*/void setDateTimeInfo(const QDateTime &datetime);public slots:/*** @brief 线程退出*/void slotExitThread();/*** @brief 向上转发结果*/void slotResult();signals:/*** @brief 执行请求* @param url 请求地址* @param arg 请求参数*/void sigPostHttpRequest(const QString &url, const QJsonObject &obj);private://工作类、线程HttpWorker *m_pWorker = nullptr;QThread m_thread;//请求url以及参数值QString m_serverIP;QString m_url;QString m_arg;
};#endif // HTTPCONTROLLER_H

实现文件

#include "httpcontroller.h"HttpWorker::HttpWorker()
{m_pManager = new QNetworkAccessManager(this);
}HttpWorker::~HttpWorker()
{if(m_pManager != nullptr){delete m_pManager;m_pManager = nullptr;}
}void HttpWorker::dealXXInfo(const QJsonObject &object)
{}void HttpWorker::slotPostHttpRequest(const QString &url, const QJsonObject &obj)
{QJsonDocument jsonDoc = QJsonDocument(obj);QByteArray argInfo = jsonDoc.toJson(QJsonDocument::Compact);qDebug() << "post HttpRequest" << url << argInfo;QNetworkRequest request;request.setUrl(QUrl(url));request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");request.setHeader(QNetworkRequest::ContentLengthHeader, argInfo.length());QNetworkReply *reply = m_pManager->post(request, argInfo);connect(reply, &QNetworkReply::readyRead, this, &HttpWorker::slotReadyRead);connect(reply, &QNetworkReply::finished, this, &HttpWorker::slotReplyFinished);}void HttpWorker::slotReadyRead()
{}void HttpWorker::slotReplyFinished()
{QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());if(reply == nullptr){qDebug() << "replyFinished Reply nullptr";return;}QByteArray byteArray = reply->readAll();if(byteArray.isEmpty()){qDebug() << "replyFinished ByteArray empty";return;}//处理最终数据slotRecvData(byteArray);//清理资源reply->deleteLater();
}void HttpWorker::slotRecvData(const QByteArray &recvBuffer)
{QJsonParseError jsonerror;QJsonDocument doc = QJsonDocument::fromJson(recvBuffer, &jsonerror);if (doc.isNull() || jsonerror.error != QJsonParseError::NoError){QString info(recvBuffer);if(!info.isEmpty()){qDebug() << "recvData parseJson error" << jsonerror.errorString() << info;}return;}//解析json数据QJsonObject object = doc.object();QString cmd = object.value("cmd").toString();QJsonObject paramObj = object.value("param").toObject();//进行业务分发if("timeSetWeb" == cmd){dealXXInfo(object);}else if("timeSetWeb" == cmd){}
}HttpController::HttpController(QObject *parent) : QObject(parent)
{//请求urlm_serverIP = "192.168.25.111";m_url = m_serverIP + "/api/XX";m_pWorker = new HttpWorker();m_pWorker->moveToThread(&m_thread);connect(&m_thread, &QThread::finished, this,&HttpController::slotExitThread);connect(this, &HttpController::sigPostHttpRequest, m_pWorker, &HttpWorker::slotPostHttpRequest);connect(m_pWorker, &HttpWorker::sigResult, this, &HttpController::slotResult);m_thread.start();
}HttpController::~HttpController()
{if(m_pWorker){delete m_pWorker;m_pWorker = nullptr;}slotExitThread();
}void HttpController::setDateTimeInfo(const QDateTime &datetime)
{//封装信息QJsonObject obj;obj.insert("cmd", "timeSetWeb");QJsonObject param;param.insert("token", 0);param.insert("dateformat", 0);param.insert("timeformat", 1);param.insert("manually", 0);param.insert("year", datetime.date().year());param.insert("month", datetime.date().month());param.insert("day", datetime.date().day());param.insert("hour", datetime.time().hour());param.insert("minute", datetime.time().minute());param.insert("second", datetime.time().second());obj.insert("param", param);emit sigPostHttpRequest(m_url, obj);
}void HttpController::slotExitThread()
{m_thread.quit();m_thread.wait();
}void HttpController::slotResult()
{}
http://www.hkea.cn/news/984516/

相关文章:

  • 什么网站可以免费做护师题企业网站管理系统源码
  • 青岛专业餐饮网站制作国内搜索引擎排行榜
  • 域名有哪些seo站长之家
  • 建设网站有哪些关键词制作软件
  • 视频网站怎么制作网店推广的作用是什么
  • 网站栏目怎么做单独的搜索框云南疫情最新消息
  • 独立商城b2c电商网站开发合肥百度seo代理
  • 做购物网站需不需要交税费郑州网站托管
  • 是不是做网站就能赚钱谷歌seo关键词优化
  • 萝岗门户网站建设今日重大新闻头条财经
  • 个人相册网站模板怎么把网站排名排上去
  • 建设外贸网站案例统计站老站长推荐草莓
  • 1688网站的特点全网营销系统
  • 西安做网站企业网址怎么申请
  • 专业网站建设品牌百度指数里的资讯指数是什么
  • 做网站规避什么网站制作
  • 网站开发工作方案2022拉人头最暴利的app
  • 网站建设好还是阿里巴巴好磁力猫torrent kitty
  • wordpress跨域访问前端优化网站
  • 住房和城乡建设部网站买卖合同北京中文seo
  • WordPress自己安装了插件深圳seo推广外包
  • 建立网站舆情分析报告范文
  • wordpress 空格 插件班级优化大师app
  • 成都有实力的网站建设网络培训心得
  • 中企高呈建设网站在百度怎么创建自己的网站
  • 女的和女的做那个视频网站怎么在网上做网络营销
  • 网站开发需要什么软件百度怎样发布作品
  • 专门做宠物食品的网站市场调研怎么做
  • 兰州网站建设q.479185700棒成年s8视频加密线路
  • 付费网站推广seo关键词排名优化怎么收费