注意:这个类的所有函数都是可重入的。
这个类是从Qt4.4引入的。

**详细描述
**QNetworkAccessManager类允许应用程序发送网络请求和接收网络应答。
Network Access API都是围绕着一个QNetworkAccessManager对象构造的,这个对象包含着发送请求的一些通用配置和设置。它包含着代理和缓存的配置,以及和这些事物相关的一些信号,并且应答信号可以作为我们检测一个网络操作的进度。
一个QNetworkAccessManager对于一整个Qt应用程序来说已经足够了!
一旦一个QNetworkAccessManager对象被创建了,那么应用程序就可以使用它在网络上发送请求。它提供了一组标准的函数,可以承载网络请求和一些可选的数据,并且每一个请求返回一个QNetworkReply对象。该返回的对象包含着返回的请求应带的所有数据。

一个简单的从网络下载的例子可如下完成:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));

manager->get(QNetworkRequest(QUrl(“http://qt.nokia.com”)));

QNetworkAccessManager有一个异步的API。当上面的replyFinished槽被调用的时候,它带的参数就是包含有下载的数据
的QNetworkReply对象。

注意:当请求完成的时候,程序员需要在适当的时候删除QNetworkReply对象。不要在连接到信号finished()的槽函数中直接
删除掉。你可以使用deleteLater()函数。

注意:QNetworkAccessManager将会把它受到的请求排队。并行执行的请求数量是依赖于协议的。目前,对于桌面平台的HTTP协议,对于一个主机/端口的组合,可6个请求并行执行。

一个更加复杂的例子,假设manager已经存在,代码如下:
QNetworkRequest request;
request.setUrl(QUrl(“http://qt.nokia.com”));
request.setRawHeader(“User-Agent”, “MyOwnBrowser 1.0”);

QNetworkReply *reply = manager->get(request);
connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(sslErrors(QList)),
this, SLOT(slotSslErrors(QList)));

网络和漫游支持
在Qt4.7版本中,QNetworkAccessManager有了额外的Bearer ManagementAPI支持,使得QNetworkAccessManager具有了管理管理网络连接的能力。
QNetworkAccessManager可以在设备离线的时候启用网络接口,并且如果当前进程是最后一个使用网络的时候,QNetworkAccessManager可以停止网络接口。漫游在传输上是同样透明的。每一个入队/挂起的网络请求可以自动的传输到一个新的接入点。
客户希望不作出任何改变就可以利用这个特性。实际上他就像把与特定平台相关的网络连接的代码从应用程序中
删除。

成员类型文档
enum QNetworkAccessManager::NetworkAccessibility
表明是否可以通过网络管理接入网络
Constant ValueDescription
QNetworkAccessManager::UnknownAccessibility -1The network accessibility cannot be determined.
QNetworkAccessManager::NotAccessible 0The network is not currently accessible, either because there is currently no network coverage or network access has been explicitly disabled by a call to setNetworkAccessible().
QNetworkAccessManager::Accessible 1The network is accessible.

enum QNetworkAccessManager::Operation
表明这个对于一个应答的处理过程
Constant ValueDescription
QNetworkAccessManager::HeadOperation 1 retrieve headers operation (created with head())
QNetworkAccessManager::GetOperation 2 retrieve headers and download contents (created with get())
QNetworkAccessManager::PutOperation 3 upload contents operation (created with put())
QNetworkAccessManager::PostOperation 4 send the contents of an HTML form for processing via HTTP POST (created with post())
QNetworkAccessManager::DeleteOperation 5 delete contents operation (created with deleteResource())
QNetworkAccessManager::CustomOperation 6 custom operation (created with sendCustomRequest())

属性文档
networkAccessible : NetworkAccessibility
这个属性表明当前是否可以通过网络管理接入网络。
如果网络不可接入,那么network access manager将不会处理任何新的网络请求,所有这些请求都会发生错误而失败。
那些以file:// scheme作为URLs的请求仍然会被处理。
这个属性的默认值反应了设备的物理状态。应用程序可以通过如下操作来覆盖它的值以禁止任何网络请求。
networkAccessManager->setNetworkAccessible(QNetworkAccessManager::NotAccessible);
我们可以通过如下调用来再次使能网络:
networkAccessManager->setNetworkAccessible(QNetworkAccessManager::Accessible);

注意:调用setNetworkAccessible()并不会改变网络状态。

Access functions:
NetworkAccessibilitynetworkAccessible () const
voidsetNetworkAccessible ( NetworkAccessibility accessible )

Notifier signal:
voidnetworkAccessibleChanged ( QNetworkAccessManager::NetworkAccessibility accessible )

Qt网络编程之QNetworkAccessManager相关推荐

  1. Qt网络编程之QNetworkRequest

    Qt Network 模块中提供了一些高级别的类,例如:QNetworkRequest.QNetworkReply 和 QNetworkAccessManager,使用常见的协议执行网络操作. 详细描 ...

  2. 嵌入式学习之QT学习---8 QT网络编程之TCP通信

    前言: Qt网络模块提供了用于编写TCP/IP客户端和服务器端程序的各种类,如用于TCP通信的QTcpSocket和QTcpServer,用于UDP通信的QUdpSocket,还有用于实现HTTP.F ...

  3. Qt网络编程之UDP编程练习(20200219)

    服务端 #include "widget.h" #include <QApplication> #include <QString> #include &l ...

  4. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天

    网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...

  5. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载. J ...

  6. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, 1 /* 2 *TCP 3 *建立连接,形成传输数据的通道: 4 *在连接中进行大数据量传输: ...

  7. Linux网络编程之IP地址转换为无符号整数的方法

    Linux网络编程之IP地址转换为无符号整数的方法,代码如下:(没考虑异常输入) #include <stdio.h> #include <string.h> #include ...

  8. 浅谈Java网络编程之Socket (2)

    <浅谈Java网络编程之Socket (1)>中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码. import java.net.*; import java.io ...

  9. iOS网络编程之Socket

    [深入浅出Cocoa]iOS网络编程之Socket 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 更多 Cocoa 开发文章,敬请访问<深入浅 ...

最新文章

  1. 动态绑定与继承:不得不去想细节
  2. 配置加密_数据库密码配置项都不加密?心也太大了!
  3. 使用 Apache Commons CLI 开发命令行工具
  4. Gh0st 3.6 存在的BUG及修改方法(收集整理)
  5. elk 日志管理_具有ELK的APIGEE API网关日志管理(弹性搜索,Logstash和Kibana)
  6. Qt笔记-Q3DScatter及QCustom3DItem的基本使用
  7. 高级JAVA - 利用函数式接口实现通用的取并集/交集/差集
  8. FTP初始化文件.netrc使用技巧[转发]
  9. 神经网络 异或_深度学习入门笔记(2)线性神经网络
  10. 计算机网络物理层之信道复用技术
  11. 使用python对mysql主从进行监控,并调用钉钉发送报警信息
  12. Android_获取屏幕大小的两种方法
  13. MyEclipse10安装properties文件插件
  14. 计算机科学导论2000字报告,《计算机科学导论》(节选)翻译报告
  15. CTF工具-010editor
  16. Cortex-M可以跑Linux操作系统吗?
  17. php源码授权网络验证系统,WEB端管理网络验证授权系统源代码
  18. WeX5制作的app,界面模仿b站(哔哩哔哩弹幕视频网)客户端
  19. 使用Jeb动态调试安卓的时候显示Could not attach to target
  20. 伦敦大学国王学院 计算机phd,伦敦大学国王学院招收博士(CSC资助博士或者NUS/HKU与KCL联培博士) - 公派出国 - 小木虫 - 学术 科研 互动社区...

热门文章

  1. JavaScript沙箱
  2. freeswitch系列二 kamailio 5.0安装及实现kamailio集成freeswitch
  3. 【沐风老师】3DMAX径向对称插件使用方法应解
  4. IDEA最常用快捷键及配置步骤
  5. Docker系列-安装docker
  6. 关于中科网讯信息服务平台的有关介绍
  7. 为什么说 MyBatis 是半自动 ORM?
  8. spatial-Spectral Clustering with Anchor Graph for Hyperspectral Image
  9. css行高包含哪些,表示行高的css属性是什么
  10. 今天给我的Ubuntu服务器挂在了一个4T的硬盘却只能识别到2T,原来是因为这!涨知识了