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

做水果代理去哪个网站本人承接网站建设

做水果代理去哪个网站,本人承接网站建设,企业信用网站建设,怎么修改自己网站内容一、HTTP客户端类功能#xff1a; 1、POST请求发送#xff1a; 支持发送JSON格式的数据自动处理请求头设置提供上传进度监控、 2、GET请求发送#xff1a; 简单的GET请求实现支持下载进度监控 3、状态监控#xff1a; 通过信号槽机制监控上传/下载进度错误处理和状态回调 /…  一、HTTP客户端类功能 1、POST请求发送 支持发送JSON格式的数据自动处理请求头设置提供上传进度监控、 2、GET请求发送 简单的GET请求实现支持下载进度监控 3、状态监控 通过信号槽机制监控上传/下载进度错误处理和状态回调 /*** file HttpClient.h* brief HTTP客户端类用于处理HTTP请求* details 提供异步HTTP请求功能支持GET和POST方法包含进度监控和错误处理*/#include QNetworkAccessManager #include QNetworkRequest #include QNetworkReply #include QJsonDocument #include QJsonObject #include QEventLoop/*** class HttpClient* brief HTTP客户端类继承自QObject* details 封装了Qt网络请求功能提供简单的接口进行HTTP通信*/ class HttpClient : public QObject {Q_OBJECTpublic:/*** brief 构造函数* param parent 父对象指针用于Qt对象树管理*/explicit HttpClient(QObject *parent nullptr) : QObject(parent) {manager new QNetworkAccessManager(this);}/*** brief 析构函数* details 清理网络管理器资源*/~HttpClient() {if (manager) {manager-deleteLater();manager nullptr;}}/*** brief 发送POST请求* param url 目标URL地址* param data 要发送的JSON数据* param callback 请求完成后的回调函数参数为(是否成功, 响应内容/错误信息)*/void sendPostRequest(const QString url, const QJsonObject data, std::functionvoid(bool success, const QString response) callback) {// 创建网络请求对象QNetworkRequest request(url);// 设置请求头为JSON格式request.setHeader(QNetworkRequest::ContentTypeHeader, application/json);// 将JSON对象转换为字节数组QJsonDocument doc(data);QByteArray postData doc.toJson();// 发送POST请求QNetworkReply* reply manager-post(request, postData);// 连接完成信号到响应处理函数connect(reply, QNetworkReply::finished, this, []() {handleResponse(reply, callback);});// 连接上传进度信号connect(reply, QNetworkReply::uploadProgress, this, HttpClient::onUploadProgress);// 连接下载进度信号connect(reply, QNetworkReply::downloadProgress, this,HttpClient::onDownloadProgress);}/*** brief 发送GET请求* param url 目标URL地址* param callback 请求完成后的回调函数参数为(是否成功, 响应内容/错误信息)*/void sendGetRequest(const QString url,std::functionvoid(bool success, const QString response) callback) {QNetworkRequest request(url);QNetworkReply* reply manager-get(request);connect(reply, QNetworkReply::finished, this, []() {handleResponse(reply, callback);});}signals:/*** brief 上传进度信号* param bytesSent 已发送的字节数* param bytesTotal 总字节数*/void uploadProgressChanged(qint64 bytesSent, qint64 bytesTotal);/*** brief 下载进度信号* param bytesReceived 已接收的字节数* param bytesTotal 总字节数*/void downloadProgressChanged(qint64 bytesReceived, qint64 bytesTotal);private slots:/*** brief 处理上传进度的槽函数* param bytesSent 已发送的字节数* param bytesTotal 总字节数*/void onUploadProgress(qint64 bytesSent, qint64 bytesTotal) {emit uploadProgressChanged(bytesSent, bytesTotal);}/*** brief 处理下载进度的槽函数* param bytesReceived 已接收的字节数* param bytesTotal 总字节数*/void onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal) {emit downloadProgressChanged(bytesReceived, bytesTotal);}private:/** brief 网络访问管理器指针 */QNetworkAccessManager* manager;/*** brief 处理网络响应* param reply 网络响应对象指针* param callback 回调函数* details 处理请求完成后的响应数据或错误信息并调用回调函数*/void handleResponse(QNetworkReply* reply,std::functionvoid(bool success, const QString response) callback) {if (reply-error() QNetworkReply::NoError) {// 请求成功读取响应数据QString response QString::fromUtf8(reply-readAll());callback(true, response);} else {// 请求失败获取错误信息QString errorString reply-errorString();callback(false, errorString);}// 清理响应对象reply-deleteLater();} }; 二、使用方式 1、作为类成员变量使用 class MyClass : public QObject {Q_OBJECT private:HttpClient* httpClient;public:MyClass(QObject* parent nullptr) : QObject(parent) {httpClient new HttpClient(this); // 将this作为父对象}// 不需要显式删除会随父对象自动删除~MyClass() {// httpClient会自动删除不需要手动删除} }; 2、 作为局部变量使用 void someFunction() {// 在栈上创建HttpClient client;// 使用client发送请求client.sendPostRequest(..., data, [](bool success, const QString response) {// 处理响应});// client会在函数结束时自动销毁 } 3、动态分配使用 void someFunction() {// 动态创建HttpClient* client new HttpClient();// 使用client发送请求client-sendPostRequest(..., data, [client](bool success, const QString response) {// 处理响应// 在回调中删除clientclient-deleteLater();}); } 4、使用智能指针 #include QScopedPointervoid someFunction() {QScopedPointerHttpClient client(new HttpClient());// 使用client发送请求client-sendPostRequest(..., data, [](bool success, const QString response) {// 处理响应});// client会在QScopedPointer销毁时自动删除 } 三、示例 // 创建客户端实例 HttpClient* client new HttpClient(this);// 监听进度信号 connect(client, HttpClient::uploadProgressChanged, this, [](qint64 sent, qint64 total) {qDebug() Upload progress: sent / total; });// 准备POST数据 QJsonObject data; data[name] test; data[value] 123;// 发送POST请求 client-sendPostRequest(http://api.example.com/endpoint, data, [](bool success, const QString response) {if (success) {qDebug() Response: response;} else {qDebug() Error: response;}} ); 注意事项 如果 HttpClient 作为 QObject 的子对象创建会随父对象自动删除不需要手动删除使用 deleteLater() 而不是直接 delete确保在 Qt 事件循环中安全删除对象如果有正在进行的网络请求建议等待请求完成后再删除 HttpClient使用智能指针可以避免手动管理内存推荐使用
http://www.w-s-a.com/news/725929/

相关文章:

  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结
  • 网站建设的重点是什么注册网站空间
  • 网站公司企业宗旨我的网站 dedecms
  • 沧州网站优化做详情图的网站
  • 中国建设银行公积金网站wordpress表单 post
  • 找权重高的网站方法wordpress视频网站上传视频
  • 营销型网站架构师迁移wordpress500错误
  • 做网站还是博客由()承担
  • wordpress 导购站模板中国最新军事新闻直播83军
  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档
  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站
  • 无极网站网站涉案多少人被抓网站的按钮怎么做
  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家
  • 太原模板建站平台旅游企业网站建设工作的通知
  • 网站国外建设超级简历模板官网
  • 上海网站建设市场医药网站怎么做
  • 宁夏成城建设集团网站网店美工课本
  • 哪些网站的简历做的比较好政务服务 网站 建设方案