QT进行http请求(post/get)

2023-11-01

在刚接触QT时第一个任务就是进行http请求,现在才开始记录,可能会有遗漏的点。

一、post请求

在.pro文件中

QT += network

在.h文件中添加对应的头文件

#include <QWidget>
#include <QObject>
#include <QDebug>
#include <QHttpMultiPart>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QMetaObject>
#include <QEventLoop>
#include <QJsonDocument>            //以下是json数据传送所需头文件
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonArray>

在.cpp中

/*
    功能说明:post请求
    参数说明:key - 加密的密钥
             data - 加密的参数
    返   回:无
*/
void GaodePost::PostRequest(QString key,QString data)
{
    QJsonObject dataobj;            //构建json对象dataobj

    dataobj.insert("key",key);
    dataobj.insert("data",data);

    QJsonDocument document;
    document.setObject(dataobj);
    QByteArray byte_array = document.toJson(QJsonDocument::Compact);    //类型转换

    //http请求
    QNetworkRequest request1;
    QNetworkAccessManager nam;
    connect(&nam, &QNetworkAccessManager::finished, this, &GaodePost::receiveGaodePostReply);

    request1.setUrl(QUrl("http://123.12.365.152/接口名"));    //要请求的网址
    
    //请求头token设置
request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));
    QString token = "xxxxxxxxxxxxxxxxxxxxxxxx";
    QString token_headerData = token;
    request1.setRawHeader("token",token_headerData.toLocal8Bit());

    QNetworkReply* reply = nam.post(request1, byte_array);        //post请求头+传输的数据

    //开启事件循环,直到请求完成
    QEventLoop loop;
    connect(reply,&QNetworkReply::finished,&loop,&QEventLoop::quit);
    loop.exec();

}

//接收请求返回的数据
QString GaodePost::receiveGaodePostReply(QNetworkReply *reply)
{
    QString res = reply->readAll();
    return res;
}

二、get请求

.pro和.h文件和post请求一样,在.cpp中

//get请求
void GaodeGet::GetRequest()
{
    QNetworkRequest request1;
    QNetworkAccessManager nam;
    connect(&nam, &QNetworkAccessManager::finished, this, &GaodeGet::receiveGaodeGetReply);

    //get与post的请求方式有所不同,get是在接口名后添加 ? 和传输的数据(type)
    request1.setUrl(QUrl("http://123.12.365.152/接口名?type"));
    request1.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));
    QString token = "xxxxxxxxxxxxxxxxxxxxxxxx";
    QString token_headerData = token;
    request1.setRawHeader("token",token_headerData.toLocal8Bit());
    QNetworkReply *reply = nam.get(request1);    //get请求头

    //开启事件循环,直到请求完成
    QEventLoop loop;
    connect(reply,&QNetworkReply::finished,&loop,&QEventLoop::quit);
    loop.exec();
}

//接收get请求返回的数据
void GaodeGet::receiveGaodeGetReply(QNetworkReply *reply)
{
    QString res = reply->readAll();
    qDebug() << "GaoDeWidget::receiveReply_get recive:" << res;
}

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

QT进行http请求(post/get) 的相关文章

  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • DefaultHttpClient GET 和 POST 命令 Java Android

    好的 这是我的应用程序 一个 Android 应用程序 允许我从移动应用程序 而不是从网站 将 CokeZone 代码提交到 CokeZone co uk 所以我编写了这部分代码来执行登录后命令 然后检查我是否登录后 问题是 发送 post
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • 在Java中解析包含multipart/form-data请求体的字符串

    问题陈述 我认为标题说明了一切 我正在寻找解析 a 的方法String包含 multipart form data HTTP 请求的正文部分 IE 字符串的内容看起来像这样 xyzseparator blah Content Disposi
  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • 使用 OpenGL 渲染 QImage

    与我相关的其他问题 https stackoverflow com questions 20126354 render qimage from sooffscreenrenderer in qglwidget 我认为更核心的问题是 如何渲染
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • org.apache.http 软件包在 API 级别 23 中被删除。替代方案是什么?

    在更新到最新的 android API 级别 23 Marshmallow 后 通过 build gradle 添加以下更改后 所有 org apache http 类都不起作用 android compileSdkVersion 23 b
  • 在 Flex 中以 HTTP Post 方式上传任意数据

    我们目前有一个 Java 小程序 可以生成大量数据并将其上传到我们的服务器 我们拥有的上传方法之一是使用 HTTP POST 到我们的服务器 其内容只是原始数据 没有多部分编码或任何内容 我正在考虑实现一个具有相同功能的 Flex 应用程序
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • Chrome 在传输一定量的数据后挂起 - 等待可用的套接字

    我有一个浏览器游戏 最近我开始向游戏添加音频 Chrome 无法加载整个页面并卡在 91 requests 8 1 MB transferred 并且不再加载任何内容 它甚至破坏了所有其他选项卡中的网站 说Waiting for avail
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • HTTP代理服务器

    我开始研究一个用 C 编写的非常基本的 HTTP 代理服务器 Edit 只是转发我的请求的东西 此时我很难理解如何继续 任何帮助都会有益的 看一眼micro proxy http acme com software micro proxy
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap

随机推荐

  • 《ImageNet Classification with Deep Convolutional Neural Networks》——AlexNet论文整理

    题目 ImageNet Classification with Deep Convolutional Neural Networks 简介 AlexNet属于一个更大更深的LeNet 改进有以下三点 增加了dropout层 丢弃层 激活函数
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 硬盘再生器和mhdd相比_让小白变高手,硬盘维修的三大工具简单、实用

    在我们平时使用电脑中经常会遇到 系统突然奔溃 然而自己确实是什么都没干系统就坏了这让很多人摸不着头脑到底是自己弄得还是系统哪里坏了 其实不然像这种情况大多数情况下都是硬盘不稳定而导致的系统文件丢失而不能启动系统 最多情况的就是注册表丢失 开
  • 启动hbase出现Java HotSpot(TM) 64-Bit Server VM warning

    分布式hbase启动异常提醒 分布式hbase启动过程出现Java HotSpot TM 64 Bit Server VM warning提醒异常 主要是因为使用的JAVA JDK版本问题 JDK8 以上的版本不需要如下图所示的红框内的两行
  • 讲述deployment、service、ingress资源的lables关系

    在实验之前 我们都知道 lable是k8s中内部找寻各个资源的依据 比如deployment需要跟那个pod资源进行绑定 通过lable service资源如何跟pod资源进行绑定 通过lable service资源如何跟service资源
  • Fabric区块大小的实验

    首先记录已在账本的大小 见下图 大小是319784字节 修改peer的源代码 将区块写入文件时 输出新区块的大小 编译peer并替代原来的peer 重新启动节点 在终端上记录区块高度 调用智能合约的链码函数 产生一个新区块 账本大小变为32
  • Java中堆和栈创建对象的区别

    栈与堆都是Java用来在Ram中存放数据的地方 与C 不同 Java自动管理栈和堆 程序员不能直接地设置栈或堆 Java的堆是一个运行时数据区 类的对象从中分配空间 这些对象通过new newarray anewarray和multiane
  • AI2019下载Adobe Illustrator CC2019安装教程

    Illustrator 简称 AI 是一款非常强大的矢量图制图软件 在平面设计 UI设计 广告设计等诸多行业都有广泛的应用 并且作为必备软件有它的不可替代性 但很多朋友在开始安装AI软件的时候却遇到种种困难 为此 我亲自录制了安装教程 也分
  • ios开发问题记录记录

    1 提示 usr include c v1 threading support 457 11 error build Use of undeclared identifier nanosleep 原因 header search paths
  • C++ deque的总结

    deque 1 deque是什么 deque 发音类似 deck 是双端队列不规则的首字母缩写 双端队列是动态大小的序列式容器 其可以像两端进行伸缩 特定的库可以以不同的方式实现deque 但通常都是一种动态数组 不论在何种情况下 它都允许
  • npm安装两个相同的库方法

    特殊情况下一个node项目中我们需要安装两个相同的库 package json devDependencies demoA vue auto routing npm vue auto routing 1 0 1 目录名 库名 指定npm库版
  • MTU的测量方法

    MTU的测量方法 MTU是Maximum Transmission Unit的缩写 意思是网络上传送的最大数据包 MTU的单位是字节 大部分网络设备的MTU都是1500 如果本机的MTU比网关的MTU大 大的数据包就会被拆开来传送 这样会产
  • 淋巴结病理数字玻片读取与处理代码

    更多数学原理小文请关注公众号 未名方略 Whole slide images are generally stored in a multi resolution pyramid structure 首先安装openslide模块
  • 如何用魔法提示词打破 Code Interpreter 修改代码的「鬼打墙」?

    注 本文为小报童精选文章 已订阅小报童或加入知识星球 玉树芝兰 用户请勿重复付费 需求 最近我喜欢上了用 Claude 2 而不是 GPT 4 来润色文章 最主要的原因是 Claude 2 100K 的 tokens 长度 实在是优势显著
  • 21天 Jenkins打卡-Day1 环境准备

    第1天作业 1 确保自己已经有一台Linux服务器 且通过SSH客户端 SecureCRT Xshell 等都可以 链接上服务器 2 你的服务器发行版 Centos Ubuntu 等 3 在你的Linux服务器上 安装jdk8 4 验证安装
  • vue结合el-dialog 封装自己的confirm二次确认弹窗

    这里使用el dialog 主要是用他的关闭动画 让关闭更加丝滑 首先在components 添加 ConfirmAlert文件夹 然后添加vue和js 文件 index js import Vue from vue import conf
  • pi控制直流电机c语言,一种基于PI控制的直流电机调速控制系统及控制方法与流程...

    本发明属于传感器技术领域 具体涉及种一种基于PI控制的直流电机调速控制系统及控制方法 背景技术 直流电机有广泛的应用 如何控制和调整电机的转速是工程和实验领域要解决的问题之一 通常采用PWM波控制电机的转速 根据PWM波的占空比调整电机的转
  • java基础案例4-4学生和老师

    package com itheima import java util Scanner abstract class Person void speak class Teacher extends Person private Strin
  • 查看浏览器token

    很简单
  • QT进行http请求(post/get)

    在刚接触QT时第一个任务就是进行http请求 现在才开始记录 可能会有遗漏的点 一 post请求 在 pro文件中 QT network 在 h文件中添加对应的头文件 include