Qt Http请求,post和get的两种方式

2023-11-16

今天我们介绍一下QT的http请求,这里有post和get两种方式

一、post请求方式:参数分为网址和具体请求值两个部分,有时候还需要设置头信息,看具体情况定

 1 void MainWindow::sendPostRequest()
 2 {
 3     QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
 4     //设置url
 5     QString url = "http://10.0.0.20:8005/order/charge";
 6     //设置头信息
 7     QNetworkRequest requestInfo;
 8     requestInfo.setUrl(QUrl(url));
 9     requestInfo.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json"));
10 //  requestInfo.setRawHeader("Content-Type","application/json");//服务器要求的数据头部
11 //  requestInfo.setRawHeader("Accept","text/json,*/*;q=0.5");//服务器要求的数据头部
12 
13     //发送数据
14     QByteArray qByteHttpData = sendJson();
15     QNetworkReply *reply =  m_pHttpMgr->post(requestInfo, qByteHttpData);
16     //添加事件循环机制,返回后再运行后面的
17     QEventLoop eventLoop;
18     connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
19     eventLoop.exec();       //block until finish
20 
21     //错误处理
22     if (reply->error() == QNetworkReply::NoError)
23     {
24         qDebug() << "request protobufHttp NoError";
25     }
26     else
27     {
28         qDebug()<<"request protobufHttp handle errors here";
29         QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
30         //statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
31         qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
32         qDebug(qPrintable(reply->errorString()));
33     }
34 
35     //请求收到的结果
36     QByteArray responseByte = reply->readAll();
37 }

二、get请求方式:参数和网址拼接到一起请求

 1 void MainWindow::sendGetRequest()
 2 {
 3     QNetworkAccessManager *m_pHttpMgr = new QNetworkAccessManager();
 4     //设置url
 5     QString url = "http://10.0.0.20:8005/vending_machine/items/ac83f39ea268";//fae4b325e52c
 6     QNetworkRequest requestInfo;
 7     requestInfo.setUrl(QUrl(url));
 8 
 9     //添加事件循环机制,返回后再运行后面的
10     QEventLoop eventLoop;
11     QNetworkReply *reply =  m_pHttpMgr->get(requestInfo);
12     connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
13     eventLoop.exec();       //block until finish
14     //错误处理
15     if (reply->error() == QNetworkReply::NoError)
16     {
17         qDebug() << "request protobufHttp NoError";
18     }
19     else
20     {
21         qDebug()<<"request protobufHttp handle errors here";
22         QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
23         //statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
24         qDebug( "request protobufHttp found error ....code: %d %d\n", statusCodeV.toInt(), (int)reply->error());
25         qDebug(qPrintable(reply->errorString()));
26     }
27     //请求返回的结果
28     QByteArray responseByte = reply->readAll();
29     qDebug() << responseByte;
30 }

三、主要区别:

get用于请求获取数据,post向指定的资源创建修改数据

get把参数包含在URL中(长度有限制),POST通过请求实体传递参数(安全)

 

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

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

Qt Http请求,post和get的两种方式 的相关文章

随机推荐

  • 组合聚合的概念

    聚合的概念 聚合 Aggregation 关系是关联关系的一种 是强的关联关系 聚合是整体和个体之间的关系 例如 汽车类与引擎类 轮胎类 以及其它的零件类之间的关系便整体和个体的关系 聚合关系也是通过实例变量实现的 在聚合关系中 两个类是处
  • shell脚本中遇到错误时中断程序运行,不再执行后面的程序

    shell脚本中遇到错误时中断程序运行 不再执行后面的程序 当你在脚本中写了一连串的代码时 如果后面的代码需要前面代码执行正确才能继续执行时 你可以使用set e vim test sh新建一个脚本文件 bin bash 设置程序出错时不再
  • 【软件工程】静态测试与动态测试

    静态测试 桌前检查 代码走查 代码审查 动态测试 黑盒测试 等价类划分 确定无效与有效等价类 设计用例尽可能多的覆盖有效类 设计用例只覆盖一个无效类 边界值分析 处理边界情况时最容易出错 选取的测试数据应该恰等于 稍小于或稍大于边界值 错误
  • python爬虫返回百度安全验证

    我一开始用的是requests库 header加了accept和user agent 这是一开始的代码 import requests headers Accept text html application xhtml xml appli
  • SpringBoot项目使用EasyPoi实现导入导出,就是这么的丝滑

    在项目的开发工程中 经常有导入导出数据的常见功能场景 Apache的POI是处理导入导出中最常用的 但是其原生的用法太复杂 很繁琐 总是在Copy 无意间发现一款简单粗暴的神器EasyPoi EasyPoi也是基于POI的 在SpringB
  • 使用vpd进行行级控制

    在系统用户下 1 创建vpd用户 create user vpd identified by 123456 grant resource connect to vpd grant execute on dbms rls to vpd gra
  • 高德地图, 动态绘制多个marker 并 随着地图缩放, 判定marker之间的距离, 显示不同 marker 效果

    转载
  • JVM系统线程

    虚拟机线程 这种线程的操作时需要JVM达到安全点才会出现 这些操作必须在不同的线程中发生的原因是他们都需要JVM达到安全点 这样堆才不会变化 这种线程的执行类型包括 stop the world 的垃圾收集 线程栈收集 线程挂起以及偏向撤销
  • MFC Windows程序设计1_3

    使用VS2008生成MFC程序 选择对话框形式 主要的需要注意的 在App类中 重写InitInstance 函数 MyDlg dlg m pWindow dlg dlg doModal return FALSE 注意InitInstanc
  • 读书有感:《失业的程序员》

    失业的程序员 是我在三天前心血来潮找来的一本书 这是一本极其易读 风趣横生的关于程序员从失业到创业的小说类书籍 书中主人公从一开始辞职失业 到整合资源开始创业 再到最后看似创业已经稳定却是艰难险阻 创业团队也从一开始的 2 人 到 10 多
  • HTML5(十一)——WebSocket 基础教程

    一 为什么要学 WebSocket websocket 是 HTML5 提供的一种长链接双向通讯协议 使得客户端和服务器之间的数据交换更简单 允许服务端主动向客户端推送数据 并且客户端与服务端只需连接一次 就可以保持长久连接 并进行数据通信
  • Unity 委托 (Delegate) 的简单理解以及实现

    委托相当于把某一个方法当成参数 当执行委托的时候就相当于执行了方法 所以这个方法必须和委托具有相同的参数类型 委托的简单实现 using UnityEngine 委托 代理 是存有对某个方法的引用的一种引用类型变量 委托语法 delegat
  • 蓝桥杯冲击01 - 质数篇

    目录 前言 一 质数是什么 二 易错点 三 试除法判断是否为质数 四 质数常考三大模型 五 真题练手 前言 距离蓝桥杯还有一个月 高效复习蓝桥杯知识 质数相关的题目在蓝桥杯中经常出现 例如 2016年蓝桥杯省赛初赛第四题就是要求判断一个数是
  • 基于宽表的数据建模

    一 业务背景 1 1 数据建模现状 互联网企业往往存在多个产品线 每天源源不断产出大量数据 这些数据服务于数据分析师 业务上的产品经理 运营 数据开发人员等各角色 为了满足这些角色的各种需求 业界传统数仓常采用的是经典分层模型的数仓架构 从
  • 部分安卓端ncnn模型推理输出数据存在大量-nan和nan的问题

    原文issue链接 部分安卓端ncnn模型推理输出数据存在大量 nan的问题 Issue 3607 Tencent ncnn github com 问题描述 onnx ncnn模型在pc端推理输出结果正确且基本一致 在部分安卓设备上使用同一
  • 剑指 Offer 41. 数据流中的中位数(java+python)

    如何得到一个数据流中的中位数 如果从数据流中读出奇数个数值 那么中位数就是所有数值排序之后位于中间的数值 如果从数据流中读出偶数个数值 那么中位数就是所有数值排序之后中间两个数的平均值 例如 2 3 4 的中位数是 3 2 3 的中位数是
  • 微信小程序内添加腾讯地图 导航

    1 微信小程序 设置 第三方设置 插件管理 添加插件 如果搜索不到腾讯位置服务路线规划插件 可搜索如下地址直接添加腾讯位置服务路线规划 小程序插件 微信公众平台 问题 提示添加失败 项目主体不符的 可以通过 服务 微信服务市场 搜索 腾讯位
  • Python3 sorted自定义排序

    Python3的sorted函数具有key参数 可以进行自定义的排序 但并不是直接将自定义比较函数赋给key 这一点和C 是不一样的 在python3中 需要import functools来传递比较函数 注意 在Python3中 自定义比
  • hibernate之关于1+N的问题

    Hibernate 之关于1 N的问题 1 N问题 也有人叫做N 1问题 至今未统一 在这里我会告诉大家我为什么称之为1 N问题 什么情况下会产生1 N问题 在实际的项目开发中 我们配置的一对多 或者是多对一 在查询的时候会产生一种现象 例
  • Qt Http请求,post和get的两种方式

    今天我们介绍一下QT的http请求 这里有post和get两种方式 一 post请求方式 参数分为网址和具体请求值两个部分 有时候还需要设置头信息 看具体情况定 1 void MainWindow sendPostRequest 2 3 Q