概述

QT的HTTP操作都是异步的,内部通过线程实现。

相关类:

QNetworkAccessManager 【发送网络请求并接收响应】

QNetworkReply 【服务响应】

QNetworkRequest 【服务请求】

QUrl

要使用这些类,需要在pro文件中加入network模块。QT += network

发送一个GET请求

void TestClass::on_pushButton_2_clicked()
{
QNetworkRequest request;
request.setHeader(QNetworkRequest::UserAgentHeader,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36");
request.setUrl(QUrl(url));
QNetworkAccessManager* manager = new QNetworkAccessManager;
manager->get(request); // 发送请求 connect(manager,&QNetworkAccessManager::finished,this,&TestClass::reply_response);
} void TestClass::reply_response(QNetworkReply* reply)
{
QString responseText = reply->readAll(); // 获取网页数据
int responseStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); // 获取HTTP状态码
}

设置代理

QNetworkProxy类提供了一个网络层代理

QNetworkProxy目前支持的类有QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer和QNetworkAccessManager

使用方法:

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy); // http代理:QNetworkProxy::HttpProxy
proxy.setHostName("127.0.0.1");
proxy.setPort(1080);
proxy.setUser("username");
proxy.setPassword("password");
m_network->setProxy(proxy); // 禁用代理
m_network->setProxy(QNetworkProxy::NoProxy);

Cookie相关操作

获取返回的cookie

QNetworkAccessManager* m_network = new QNetworkAccessManager;
...
QNetworkCookieJar* jar = m_network->cookieJar();
QList<QNetworkCookie> list = jar->cookiesForUrl(url);
...

设置cookie

QList<QNetworkCookie> list;
list.append(QNetworkCookie("isAdmin","1"));
QVariant var;
var.setValue(list);
request.setHeader(QNetworkRequest::CookieHeader,var);

设置HTTP头

HTTP头设置有两个方法,分别是:setHeadersetRawHeader

使用setRawHeader就行了,如:

request.setRawHeader("User-Agent","izero v1.0");

最新文章

  1. FilterDispatcher已被标注为过时解决办法 &amp;gt;&amp;gt;&amp;gt; FilterDispatcher &amp;lt;&amp;lt;&amp;lt; is deprecated!
  2. 《zw版&#183;Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
  3. [转]easyui tree 模仿ztree 使用扁平化加载json
  4. AutoCAD .NET二次开发(三)
  5. 关于js中onclick字符串传参问题
  6. 3.Knockout.Js(属性绑定)
  7. 第十七章,txt文件的写入和读取数据结合练习(C++)
  8. Ehcache(2.9.x) - API Developer Guide, Key Classes and Methods
  9. WebService--使用 CXF 开发 REST 服务
  10. wpf xmal基础
  11. Tokumx 代替 Mongodb 群集部署
  12. UVa 11340 - Newspaper
  13. Linux运维正则表达式之grep
  14. The server&#39;s host key is not cached in the registry. You have no guarantee that the server……
  15. 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法!
  16. 2018 .NET开发者调查报告: .NET Core 是怎么样的状态
  17. Python动态绑定属性slots的使用
  18. 知识点---js监听手机返回键,回到指定界面
  19. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]
  20. 关于django的一些基础知识

热门文章

  1. html+css+js(登录页)
  2. 解决matplotlib中文不显示问题
  3. Xmind8破解教程
  4. APC 篇——总结与提升
  5. c语言中数组的定义和java中数组定义的一些区别
  6. docker构建镜像 (3)
  7. PHP的这些基础知识你应该熟知
  8. redis集群升级,数据迁移及校验
  9. Docker consul的容器服务更新与发现(超详细配图)
  10. Ubuntu 20.04.3 LTS + Intel Realsense 400系列