Qt中带token的Http请求

2023-11-18

详细代码:

get请求:

    QTimer timer;
    timer.setInterval(5000);    // 设置超时时间
    timer.setSingleShot(true);  // 单次触发

    if(m_pGetManager)
    {
        delete m_pGetManager;
        m_pGetManager = nullptr;
    }

    m_pGetManager = new QNetworkAccessManager(this);

    QString strUrl = QString("%1test/listFocusAttribute/%2")
            .arg(g_strWebIp).arg(strStudyUid);

    QUrl url(strUrl);

    QNetworkRequest* request = new QNetworkRequest;
    QSslConfiguration config;
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    config.setProtocol(QSsl::TlsV1SslV3);
    request->setSslConfiguration(config);
    request->setUrl(QUrl(url));
    request->setHeader(QNetworkRequest::ContentTypeHeader, "application/json;charset=UTF-8");
    request->setRawHeader("Authorization", g_strToken.toLatin1());

    QNetworkReply* reply = m_pGetManager->get(*request);

    QEventLoop eventLoop;
    connect(&timer, &QTimer::timeout, this, &CLessionWgt::sltReqTimeOut);
    connect(&timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit);
    connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
    timer.start();
    eventLoop.exec(QEventLoop::ExcludeUserInputEvents);

    QByteArray data = reply->readAll();

    if(QString(data).isEmpty())
    {
        disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);

        emit sigTipsMsg(ERRORMSG, tr("network anomaly"));
        JCTC << tr("network anomaly  ") << reply->errorString();

        timer.stop();
        reply->abort();
        reply->deleteLater();
        reply = nullptr;
        return;
    }

    QJsonParseError jsonError;
    QJsonDocument json = QJsonDocument::fromJson(data, &jsonError);

    if (!timer.isActive())
    {
        disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
    }
    else
    {
        if (jsonError.error == QJsonParseError::NoError)
        {
            if (json.isObject())
            {
                QJsonObject obj = json.object();
                QJsonValue Jsvalue;

                if (obj.contains("code"))
                {
                    Jsvalue = obj.value("code");
                    int iResCode = Jsvalue.toVariant().toInt();
                    if (iResCode == 0)
                    {
                        if(obj.contains("data") && obj.value("data").isArray())
                        {
                            paserAttributeInfo(obj.value("data").toArray());
                        }
                    }
                    else
                    {
                        emit sigTipsMsg(ERRORMSG, tr("Failed to obtain disease screening information, error code: %1").arg(iResCode));
                        if(obj.contains("msg"))
                        {
                            JCTC << obj.value("msg").toString();
                        }
                    }
                }
            }
            else
            {
                JCTC << "json error";
            }
        }
        else
        {
            emit sigTipsMsg(ERRORMSG, tr("Abnormal access to disease screening information"));
        }
    }

    timer.stop();

    reply->abort();
    reply->deleteLater();
    reply = nullptr;

post请求

    QTimer timer;
    timer.setInterval(5000);    // 设置超时时间
    timer.setSingleShot(true);  // 单次触发

    if(m_pSaveManager)
    {
        delete m_pSaveManager;
        m_pSaveManager = nullptr;
    }


    m_pSaveManager = new QNetworkAccessManager(this);

    QString strUrl = QString("%1carotid_crf/carotidCrfFocusAttribute/addFocusAttribute").arg(g_strWebIp);


    QUrl url(strUrl);

    QNetworkRequest* request = new QNetworkRequest;
    QSslConfiguration config;
    config.setPeerVerifyMode(QSslSocket::VerifyNone);
    config.setProtocol(QSsl::TlsV1SslV3);
    request->setSslConfiguration(config);
    request->setUrl(QUrl(url));
    request->setHeader(QNetworkRequest::ContentTypeHeader, "application/json;charset=UTF-8");
    request->setRawHeader("Authorization", g_strToken.toLatin1());

    QNetworkReply* reply = m_pSaveManager->post(*request, getChangedJson());

    QEventLoop eventLoop;
    connect(&timer, &QTimer::timeout, this, &CLessionWgt::sltReqTimeOut);
    connect(&timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit);
    connect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
    timer.start();
    eventLoop.exec(QEventLoop::ExcludeUserInputEvents);

    QByteArray data = reply->readAll();

    if(QString(data).isEmpty())
    {
        disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);

        emit sigTipsMsg(ERRORMSG, tr("network anomaly"));
        JCTC << tr("network anomaly  ") << reply->errorString();

        timer.stop();
        reply->abort();
        reply->deleteLater();
        reply = nullptr;
        return false;
    }

    QJsonParseError jsonError;
    QJsonDocument json = QJsonDocument::fromJson(data, &jsonError);

    if (!timer.isActive())
    {
        disconnect(reply, &QNetworkReply::finished, &eventLoop, &QEventLoop::quit);
    }
    else
    {
        if (jsonError.error == QJsonParseError::NoError)
        {
            if (json.isObject())
            {
                QJsonObject obj = json.object();
                QJsonValue Jsvalue;

                if (obj.contains("code"))
                {
                    Jsvalue = obj.value("code");
                    int iResCode = Jsvalue.toVariant().toInt();
                    if (iResCode == 0)
                    {
                        emit sigTipsMsg(NORMALMSG, tr("Successfully saved disease screening information"));
                    }
                    else
                    {
                        emit sigTipsMsg(ERRORMSG, tr("Failed to save disease screening information, error code: %1").arg(iResCode));
                        JCTC << tr("Failed to save disease screening information, error code: %1").arg(iResCode);
                        if(obj.contains("msg"))
                        {
                            JCTC << obj.value("msg").toString();
                        }
                        timer.stop();

                        reply->abort();
                        reply->deleteLater();
                        reply = nullptr;
                        return false;
                    }
                }
                else
                {
                    emit sigTipsMsg(ERRORMSG, tr("Save disease screening information abnormal"));
                    JCTC << tr("Save disease screening information abnormal");
                    timer.stop();

                    reply->abort();
                    reply->deleteLater();
                    reply = nullptr;
                    return false;
                }
            }
            else
            {
                JCTC << "json error";
                timer.stop();

                reply->abort();
                reply->deleteLater();
                reply = nullptr;
                return false;
            }
        }
        else
        {
            emit sigTipsMsg(ERRORMSG, tr("Save disease screening information abnormal"));
            JCTC << tr("Save disease screening information abnormal");
            timer.stop();

            reply->abort();
            reply->deleteLater();
            reply = nullptr;
            return false;
        }
    }

    timer.stop();
    reply->abort();
    reply->deleteLater();
    reply = nullptr;
    return true;```

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中带token的Http请求 的相关文章

随机推荐

  • 云服务中执行wget,报403

    问题复现 云服务器中配置完nginx后 通过wget测试 报403 解决方法 根目录执行如下命令 chmod R 777 root chmod R 777 root test server chmod R 777 root test ser
  • 在react项目中,使用craco插件进行mobx配置解决方案

    在使用react项目中 不可避免的要使用蚂蚁金服出品的ant desgin前端UI组件 ant desgin推荐使用 craco 一个对 create react app 进行自定义配置的社区解决方案 对 create react app
  • 一台服务器如何部署多个tomcat和项目(最详细的图文教程!!!)

    前言 提示 部署多个项目的方法有很多种 本文记载的是在Windows下 安装多个tomcat通过修改端口来部署项目 Linux部署方式大同小异 第一步 解压tomcat安装包后 复制一份并且重命名 多个tomcat就多复制一份 没有tomc
  • 【测试开花】五、项目管理-前端-实现查询、新增功能

    基于 springboot vue 的测试平台开发继续更新 一 查询功能 在之前的项目列表接口里 支持使用项目名称模糊查询 现在来实现前端 1 input 输入框 到组件库里找个输入框 复制代码 修改代码 v model 绑定了下面 dat
  • 服务器架构的演进

    服务器端的架构随着公司以及业务的发展 它不断演进 其演进的过程如下 https www cnblogs com joelan0927 p 10425530 html https blog csdn net daogla article de
  • 【数电】如何通俗地理解锁存器和触发器

    目录 一 相关知识 1 三极管和MOS管 2 TTL电路和CMOS电路 3 门电路 4 双稳态电路 二 锁存器 触发器 1 锁存器 2 触发器 1 电平触发的SR触发器 2 电平触发的D触发器 3 边沿触发的D触发器 4 脉冲触发的SR触发
  • java环境搭建图解_Windows7下的Java运行环境搭建过程图解

    单击 Java Download 按钮 选中 Accept License Agreement 单选按钮 我们以Windows 64位操作系统为例 下载Windows X64版的jdk 单击 jdk 8u5 windows x64 exe
  • vue-video-player 一款vue的前端视频播放插件 支持m3u8

    项目进行时 对视频模块需要进行组件开发 结合当前使用的开发框架是vuecli 于是寻找到vue video player 根据github上的文档进行开发 发现并不能实现播放功能 于是在网站上进行寻找发现 vue video player依
  • 3.爬虫之Scrapy框架的安装与使用

    1 Scrapy框架 1 1 介绍 Scrapy是一个开源和协作框架 可以用于数据挖掘 监测 自动化测试 获取API所有返回的数据或网络爬虫 Scrapy是基于twisted框架开发的 twisted是一个流行的事件驱动的python网络框
  • 不用导入animate库,也能实现animate的动画

    1 基础公共代码 animated animation duration 8s 持续时间 animation fill mode both 2 在animate官网 Animate css A cross browser library o
  • Django快速开发(精简版)

    1 使用虚拟环境 workon 虚拟环境名 2 退出虚拟环境 deactivate dajngo框架开发的大体流程 1 创建环境 mkvirtualenv 虚拟环境名 删除 rmvirtualenv 虚拟环境名 virtualenv p u
  • SMTP发送邮件

    SMTP是发送邮件的协议 Python内置对SMTP的支持 可以发送纯文本邮件 HTML邮件以及带附件的邮件 Python对SMTP支持有smtplib和email两个模块 email负责构造邮件 smtplib负责发送邮件 首先 我们来构
  • vue +C# mvc 坑

    1 把input标签放入到form表单中后 再将input中的值新增到数据库后 界面会刷新 解决 删除form 标签 原因待查
  • win11 安装opencv-python

    首先下载python3 7以上版本 installer版本 选择安装pip 添加环境 cmd 打开终端 pip install i https pypi tuna tsinghua edu cn simple opencv python p
  • List集合给另一个List集合赋值问题(即浅拷贝与深拷贝)

    问题 java中将一个list的内容复制给另一个list之后 去新的list进行操作的时候 原来的list也会发生变化 解决方案 直接采用 进行的复制属于浅层赋值 两者指向的使用一个地址 所以操作一个时另一个也会发生变化 如果不想出现这样的
  • 搜索插入位置 JavaScript

    在有序数组中查找 无则插入 元素 返回索引 题目详情 https leetcode cn com problems search insert position description 遍历数组查找 插入 查找比较简单 插入时会麻烦一些 如
  • Java中的String用法

    新手Java程序员了解String类型 1 String是什么数据类型 String在定义上是java lang包下的一个类 它不是基本的数据类型 String是不可变的 JVM使用字符串池来存储所有的字符串对象 2 创建String对象的
  • 阅读书源最新2020在线导入_最最最最最好用的小说神器,全网书源免费用!

    今天给大家分享的是小说软件 为了满足所有小伙伴的需求 今天安卓和苹果都安排上了 一款Android应用 一款iOS应用 两款应用都十分相似 都是可以自行添加书源的软件 几乎覆盖全网小说 阅读 Android 软件本身是没有任何资源的 如果不
  • elasticsearch心得体会

    1 聚合搜索的字段如果是求和的情况下 字段不能为string类型 那么排序时字段要求是不是也一样呢
  • Qt中带token的Http请求

    详细代码 get请求 QTimer timer timer setInterval 5000 设置超时时间 timer setSingleShot true 单次触发 if m pGetManager delete m pGetManage