HTTP协议
以下来自维基百科
超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。HTTP是万维网的数据通信的基础。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
在Qt网络编程简介中我们提到过Qt中使用QNetworkAccessManager类和QNetworkReply类来进行HTTP的编程。网络请求由QNetworkRequest类来表示,它也作为与请求有关的信息(例如,任何头信息和使用加密)的容器。
在创建请求对象时指定的URL决定了请求使用的协议,目前支持HTTP、FTP和本地文件URLs的上传和下载。QNetworkAccessManager类用来协调网络操作,每当一个请求创建后,该类用来调度它,并发射信号来报告进度。该类还协调cookies的使用,身份验证请求,及其代理的使用等。对于网络请求的应答使用QNetworkReply类表示,它会在请求被完成调度时由QNetworkAccessManager来创建。QNetworkReply提供的信号可以用来单独的监视每一个应答。
QT 中实现网页浏览功能(QT4.8 或者5.8 都行)
-
新建一个gui 项目,如下图, 在por文件中加上
QT += core gui network
。 -
在ui文件中放一个
Text Browser
部件
-
然后.h 文件如下:
QtNetwork
是网络总的头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtNetwork>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void ReplyFinished(QNetworkReply*);
private:
Ui::MainWindow *ui;
QNetworkAccessManager* m_manager{
nullptr};
};
#endif // MAINWINDOW_H
- cpp文件如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_manager = new QNetworkAccessManager(this);
/// 创建了一个QNetworkAccessManager类的实例,它用来发送网络请求和接收
/// 应答。然后关联了管理器的finished()信号和我们自定义的槽,每当网络应答结束时都会发射这个信号。
connect(m_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(ReplyFinished(QNetworkReply*)