qt 网络库使用介绍
qt 网络库使用介绍
在.pro文件中,要手动添加network模块:QT += network
有三个核心类,
QNetworkAccessManager: 发送get或者post请求。
用get方法或者post方法发送get/post请求
参数是QNetworkRequest,返回值是QNetworkReply
QNetworkRequest:包装请求信息
用setHeader方法设置请求的header
用setUrl方法设置服务器的IP和端口
QNetworkReply:包装接服务器返回的信息。
注意,用rep->readAll();得到返回的数据;用rep->readAll(key);得到返回的header信息
一个小例子,给百度发一个get请求。
注意事项:
1,设置http请求头UserAgent,目的是伪装成浏览器的发送的http请求。
2,调用get方法后,在等待服务器的返回的过程中,get方法或者post方法是不阻塞的,调用后立即返回。
3,因为get/post方法不阻塞,那怎么才能知道服务器什么时候处理完,返回给客户端呢,监听QNetworkReply里的&QNetworkReply::readyRead信号。
4,qDebug() << 2222;会先于qDebug() << data;被打印出来。原因是get方法不阻塞。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QNetworkAccessManager* mgr = new QNetworkAccessManager(this);
QString agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36";
QNetworkRequest res;
//设置http请求头UserAgent,目的是伪装成浏览器的发送的http请求
res.setHeader(QNetworkRequest::UserAgentHeader, agent);
//设置URL
//res.setUrl(QUrl("http://www.baidu.com:80"));
res.setUrl(QUrl("http://10.210.65.129:80"));
//发送http请求,返回的结果放到rep里。
//QNetworkReply* rep = mgr->post(res, "");
QNetworkReply* rep = mgr->get(res);
//读服务器返回的数据
connect(rep, &QNetworkReply::readyRead, this, [=](){
//取得服务器回发的header数据
QVariant url = rep->header(QNetworkRequest::LocationHeader);
//服务器回发的数据,但不包括头,头的信息在header里。
QByteArray data = rep->readAll();
qDebug() << data;
qDebug() << url.toString();
});
qDebug() << 2222;
}
c/c++ 学习互助QQ群:877684253
本人微信:xiaoshitou5854
qt 网络库使用介绍的更多相关文章
- C/C++ 网络库介绍
C/C++ 网络库介绍 Aggregated List of Libraries(Source Link) Boost.Asio is really good. Asio is also availa ...
- Redis网络库源码分析(1)之介绍篇
一.前言 Redis网络库是一个单线程EPOLL模型的网络库,和Memcached使用的libevent相比,它没有那么庞大,代码一共2000多行,因此比较容易分析.其实网上已经有非常多有关这个网络库 ...
- python 标准库和第3方库的介绍
忘了从哪里来的了~~~~ Tkinter———— Python默认的图形界面接口.Tkinter是一个和Tk接口的模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组.T ...
- qt configure参数配置介绍
======================================全文是按照./configure -help来翻译的==================================== ...
- QT(1)介绍
Qt官网 Qt官网:https://www.qt.io Qt下载:http://www.qt.io/download Qt所有下载:http://download.qt.io/archive/qt Q ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册
<Linux多线程服务端编程:使用muduo C++网络库>这本书自今年一月上市以来,半年之内已经重印两次(加上首印,一共是三次印刷),总印数达到了9000册,这在技术书里已经算是相当不错 ...
- QT共享库的创建与调用(初级)(附:UI界面不能被改变的其中一个原因)
背景: 最近在做的一个项目其中一部分既是实现PC与下位机的USB通信.windows平台下已经完成,现需移植到linux平台下. 在linux系统中,通过一段时间的工作,设备已被配置成hid类(后续再 ...
- 利用百度词典API和Volley网络库开发的android词典应用
关于百度词典API的说明,地址在这里:百度词典API介绍 关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley 首先我们看下大体的界面布局!
随机推荐
- Easy User Manager System writeup
0x01 解题 思路 一个进程用自己的ip去申请拿到code然后进入verify页面,另外一个进程去申请8.8.8.8 步骤 1. 首先注册一个账号 然后用两个不同的浏览器进入Change页面.这里我 ...
- Spark中持久化和序列化学习
一.cache和persisit的对比 -rw-r--r--@ 1 hadoop staff 68M 5 17 07:04 access.log    cache/persitence是 laz ...
- nginx 七层负载均衡
[tcp] nginx 七层负载均衡 nginx负载均衡概述 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡, ...
- maven配置本地和远程仓库
maven项目中我们不用挨个导入jar包,那这些Jar包从哪里来呢?当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库 ...
- 如何获取表增长历史记录信息? (Doc ID 1395195.1)
How To Get Table Growth History Information? (Doc ID 1395195.1) APPLIES TO: Oracle Database - Enterp ...
- 201871010118-唐敬博《面向对象程序设计(java)》第一周学习总结
博文正文开头格式:(3分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/p/11435127.html 这个作业的要求在哪里 https:/ ...
- misc-4-1
记录一题盲水印的misc,缅怀昨天高校运维挑战赛的twocats翻车车 下载下来binwalk一下 然后在里面发现了压缩包,并找到两长一模一样的图片,还要tip.txt Although two da ...
- AcWing 154. 滑动窗口 单调队列
地址 https://www.acwing.com/problem/content/description/156/ 输入格式 输入包含两行. 第一行包含两个整数n和k,分别代表数组长度和滑动窗口的长 ...
- C++并发编程实战
第1章 你好,C++并发世界 第2章 管理线程 第3章 在线程间数据共享 第4章 同步并发操作 第5章 C++内存模型和原子类型操作 第6章 设计基于锁的并发数据结构 第7章 设计无锁的并发数据结构 ...
- 内核态发生非法地址访问是否会panic
https://mp.weixin.qq.com/s?__biz=MzAwMDUwNDgxOA==&mid=2652663676&idx=1&sn=b18ab57322594e ...