QHttp是Qt所提供有关网络的高阶API,可以协助我们进行HTTP协议的进行,QHttp发出请求时是非同步的,请求的过程中会发出相关的Signal,我们可以用Slot来接收这些Signal,并进行相关的处理。
这个HttpGet可以让我们指定文件的URL地址,以HTTP方式取得文件并存储在本地,URL在Qt中以QUrl代表,当文件下载完成时,会发出finished()的Signal,当QHttp所指定的全部请求完成时,会发出done()的Signal,HTTPGet类中自定义的Slot就是用来接收QHttp的done() Signal以进行相关处理的,这可以在HttpGet的实现中看到
Qt的QHttp与QFtp在使用上有许多类似的地方,可以在以上的实例中看到一些特性,以下整理出相关的特性:
1) 非阻塞行为,请求时非同步的。
2) 我们可以设定一连串的请求,每个请求都有一个Command ID,QHttp的requestStarted()与requestFinished()等Signal会带有请求的Command ID,我们可以用以追踪骑请求的执行。
3) 在数据传输过程中,有相关的Signal可以追踪进度,像是QHttp的dataReadProgress()、dataSendProgress()等Signal。
4) 支援QIODevice的写入和读取,还有以QByteArray为基础的API。
url
统一资源定位符(URL)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种地址可以是本地磁盘,也可以是局域网上的某一台计算机,更多的是Internet上的站点。简单地说,URL就是Web地址,俗称“网址”。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
以下先示范一个最基本的QHttp使用,程序将设计一个HttpGet类:
HttpGet.h
Cpp代码
#ifndef HTTPGET_H
#define HTTPGET_H
#include <QObject>
class QUrl;
class