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 首先我们看下大体的界面布局!
随机推荐
- php反序列化漏洞绕过魔术方法 __wakeup
0x01 前言 前天学校的ctf比赛,有一道题是关于php反序列化漏洞绕过wakeup,最后跟着大佬们学到了一波姿势.. 0x02 原理 序列化与反序列化简单介绍 序列化:把复杂的数据类型压缩到一个字 ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十:为SQL Server配置Always On
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 应用DEV第三方界面控件制作批量添加水印程序
本次应用DevExpress和C#语言制作了一个批量添加水印的程序,看界面效果图: 界面中既可以进行文字水印添加,也可以图片水印添加,同时还可以对水印的位置进行设置,比较实用! 文字水印的具体添加情况 ...
- OC代码规范小记
代码规范 一:基本代码命名 1.通用原则 尽量清晰又简洁,无法两全时清晰更重要,可读性优先级更高. insertObject:atIndex: 好的 insert:at 坏的 removeObject ...
- Spring Boot 2 读取配置文件
开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目. 一.默认配置文件 Spring Boot会读取名称a ...
- python虚拟环境virtualenv下安装MySQL-python(1.2.3)
该文章很有用建议收藏 我们在Windows下开发python应用时,可能需要安装各种第三方模块,但如果又不想污染公共的python环境,怎么办呢?最好是在各自的 python工程中创建一个virtua ...
- Error 1327 Invalid Drive 的解决办法
出现场景: 当我在安装STM32公司的 STM32 ST-LINK Utility v4.5.0 软件时,弹出了这个错误.弹框的内容大体是说找不到D盘,这里忘记截图了. 我的电脑的硬盘是我另一 ...
- R1-5天
R语言笔记文档 2019.11.24 R语言的安装 工作目录查看与更改 变量的三种赋值 如何查看R语言帮助 ? args 基础数据类型 基本数据类型 因子.数据框.数组.矩阵.列表.向量 2019.1 ...
- 05. Go 语言函数
Go 语言函数 函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函 ...
- WPf 带滚动条WrapPanel 自动换行 和控件右键菜单
原文:WPf 带滚动条WrapPanel 自动换行 和控件右键菜单 技能点包括 WPf 样式的引用 数据的验证和绑定 比较适合初学者 前台: <Window.Resources> < ...