HTTP即超文本传输协议,它是一种文件传输协议。这一节中我们将讲解如何利用HTTP从网站上下载文件。
上一节中我们已经提到过了,现在Qt中使用QNetworkAccessManager类和QNetworkReply类来进行HTTP的编程。下面我们先看一个简单的例子,然后再进行扩展。
(一)最简单的实现。
1.我们新建Qt4 Gui QApplication 。
工程名为“http”,然后选中QtNetwork模块,最后Base class选择QWidget 。注意:如果新建工程时没有添加QtNetwork模块,那么就要手动在工程文件.pro中添加代码 QT += network ,表明我们使用了网络模块。
2.我们在widget.ui文件中添加一个 Text Browser ,如下图。
3..在widget.h中我们添加代码。
添加头文件:#include <QtNetwork>
私有变量private中:QNetworkAccessManager *manager;
私有槽函数private slots 中:void replyFinished(QNetworkReply *);
4.在widget.cpp文件中添加代码。
在构造函数中添加如下代码:
manager = new QNetworkAccessManager(this); //新建QNetworkAccessManager对象
connect(manager,SIGNAL(finished(QNetworkReply*)), //关联信号和槽
this,SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl(“http://www.yafeilinux.com”))); //发送请求
然后定义函数:
void Widget::replyFinished(QNetworkReply *reply) //当回复结束后
{
QTextCodec *codec = QTextCodec::codecForName(“utf8″);
//使用utf8编码,这样才可以显示中文
QString all = codec->toUnicode(reply->readAll());
ui->textBrowser->setText(all);
reply->deleteLater(); //最后要释放reply对象
}
5.运行效果如下。