QT之Http请求

这篇具有很好参考价值的文章主要介绍了QT之Http请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天我们介绍一下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通过请求实体传递参数(安全)

GET

POST

后退按钮/刷新

无害

数据会被重新提交(浏览器应该告知用户数据会被重新提交) 

书签

可收藏为书签

不可收藏为书签

缓存

能被缓存

不能被缓存

编码类型

application/x-www-form-urlencoded

application/x-www-form-urlencoded或multipart/form-data.为进制数据使用多重编码

历史

参数保留在浏览器历史中

参数不会保留在浏览器历史中

对数据长度的限制

是的。当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL 的最大长度是2048个字符) 

无限制

对数据类型的限制

只允许ASCII字符。

没有限制。也允许二进制数据。

安全性

POST相比,GET的安全性较差,因为所发送的数据是URL的一部分。

在发送密码或其他敏感信息时绝不要使用GET !

POST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中

可见性

数据在URL中对所有人都是可见的

数据不会显示在URL中文章来源地址https://www.toymoban.com/news/detail-610888.html

到了这里,关于QT之Http请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构

    🙋‍♂️ 作者:海码007 📜 专栏:C++专栏 💥 标题:【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构 ❣️ 寄语:书到用时方恨少,事非经过不知难。 🎈 最后: 文章作者技术和水平有限,如果文中出现错误,希望大家能指正! 最近项目涉及到网络HTTP相关内容,需要处

    2024年02月03日
    浏览(43)
  • QT实现客户端服务器HTTP(get请求、post请求)

    服务器代码如下: QtHttpForS.h QtHttpForS.cpp main.cpp QtHttpForS.ui 客户端代码: QtHttpForC.h QtHttpForC.cpp mian.cpp QtHttpForC.ui 程序运行效果: GET请求: POST请求: POST请求使用postman测试: 注意: 可以发现,在使用postman进行POST请求发送时,服务器接收到的请求头与QTSocket的POST请求的请求头

    2023年04月22日
    浏览(65)
  • Qt Http请求,post和get的两种方式

    今天我们介绍一下QT的http请求,这里有post和get两种方式 一、post请求方式:参数分为网址和具体请求值两个部分,有时候还需要设置头信息,看具体情况定 二、get请求方式:参数和网址拼接到一起请求 三、主要区别: get用于请求获取数据,post向指定的资源创建修改数据 g

    2024年02月15日
    浏览(53)
  • 嵌入式Qt中实现http服务接收POST请求

    嗨喽,大家好!以下知识点做个简单记录分享给小伙伴们! 首先我们来理解几个概念 “ WebSocket服务器和HTTP服务器是两种不同的服务器类型,它们在协议、连接方式和通信模式等方面有所区别。 协议:HTTP服务器使用HTTP协议进行通信,而WebSocket服务器使用WebSocket协议。HTTP协

    2024年02月20日
    浏览(42)
  • Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应

    Qt 网络编程是使用 Qt 框架进行网络应用开发的重要组成部分。Qt 是一个跨平台的 C++ 应用程序开发框架,广泛应用于各种领域,包括桌面应用、移动应用和嵌入式设备。在本文中,我们将探讨 Qt 网络编程的优势,以及本文涉及的主题,包括 URL、HTTP、服务发现和请求响应等。

    2023年04月23日
    浏览(53)
  • Qt 使用HTTP请求网络API并接收返回的JSON格式的数据

    引入网络模块: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    浏览(51)
  • Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)

    接到一个需求是开发下海康的球机,控制云台,给到我的是一个开发手册,当然了是海康的私有协议 ISAPI开发手册 https://download.csdn.net/download/qq_37059136/88547425 关于开发这块读文档就可以理解了,海康使用的是摘要认证,当然了海康已经给出使用范例 通过libcurl就可以直接连接上海康的

    2024年02月04日
    浏览(49)
  • Qt+QtWebApp开发笔记(三):http服务器动态html连接跳转基础交互

      网页很多时候是动态的,于是本篇文章目标实现一个简答的动态页面—页静态页面互相跳转,点击可以跳转到子页面。        链接:https://pan.baidu.com/s/1bbhcu1XTiaJRYGRQRG5a0g?pwd=1234     上一篇的“Hello World”应用程序确实输出了简单的纯文本。但网络的语言是HTML。因

    2024年02月06日
    浏览(81)
  • Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130762721 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《Qt+QtWebApp开发笔记(一

    2024年02月05日
    浏览(40)
  • 14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序

    Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是 QNetworkRequest、QNetworkReply和QNetworkAccessManager。 QNetworkRequest 类通过一个URL 地址发起网络协议请求,也保存网络请求的信息,目前支持 HTTP、FTP 和局部文件 URLs的下载或上传。 QNe

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包