【1】头文件

想要利用QNetworkAccessManager类,必须在pro文件中添加对应库network,如下:

QT += network

如果利用的VS + QT开发环境,请参考随笔《Qt添加QtNetwork库文件

【2】示例文件

文件1:

 #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 = );
~MainWindow(); private:
void get(QUrl u); private slots:
void on_pushButton_clicked();
void finished(); private:
Ui::MainWindow *ui; QUrl m_url;
QString m_htmlText;
QNetworkReply *m_pReply;
QNetworkAccessManager m_manager;
}; #endif // MAINWINDOW_H

文件2:

 #include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
m_pReply(Q_NULLPTR)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::get(QUrl u)
{
m_url = u; if (m_pReply != Q_NULLPTR)
{ // 更改reply指向位置前一定要保证之前的定义了自动delete
m_pReply->deleteLater();
} QNetworkRequest request;
request.setUrl(m_url);
m_pReply = m_manager.get(request);
qDebug() << "start get";
connect(m_pReply, &QNetworkReply::finished, this, &MainWindow::finished);
} void MainWindow::finished()
{
QByteArray bytes = m_pReply->readAll(); m_pReply->deleteLater();
m_pReply = Q_NULLPTR; const QVariant redirectionTarget = m_pReply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (!redirectionTarget.isNull())
{ //如果网址跳转重新请求
const QUrl redirectedUrl = m_url.resolved(redirectionTarget.toUrl());
qDebug() << "redirectedUrl:" << redirectedUrl.url();
get(redirectedUrl);
return;
} qDebug() << "finished";
m_htmlText = bytes;
qDebug() << "get ready,read size:" << m_htmlText.size(); // 写入文件
QFile f("result.html");
f.open(QFile::WriteOnly);
f.write(bytes);
} void MainWindow::on_pushButton_clicked()
{
m_htmlText = "";
get(QUrl("http://www.baidu.com/"));
}

返回的结果文件:

在运行目录中查找result.html文件,双击运行,然后与百度首页作对比,可以发现get获取的数据中不包含图片信息。

【3】总结

示例程序很简单,主要应用QNetworkAccessManager类的get接口。

Good Good Study, Day Day Up.

顺序 选择 循环 总结

QNetworkAccessManager的更多相关文章

  1. QNetworkAccessManager 实现的 ftp 上传

    使用 QNetworkAccessManager 实现的 ftp 上传代码.完整可用,做个备忘. #include "mainwindow.h" #include <QDeb ...

  2. QNetworkAccessManager的异步与线程

    Qt版本5.1.1 以HTTP操作为例 Qt中的HTTP操作都是异步的. 内部通过线程实现 创建线程的时机在QNetworkReplyHttpImplPrivate::postRequest() vo ...

  3. QFTP走了以后QNetworkAccessManager出现了

    QNetworkAccessManager Class Header:    #include <QNetworkAccessManager>qmake:     QT += networ ...

  4. Qt之HTTP上传/下载(继承QNetworkAccessManager,包括使用了authenticationRequired认证信号)

    效果 QNetworkAccessManager DownloadNetworkManager::DownloadNetworkManager(QObject *parent) : QNetworkA ...

  5. Qt之HTTPS登录(集成QNetworkAccessManager提前修改QSslConfiguration,然后post)

    简述 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP ...

  6. 使用QNetworkAccessManager实现Qt的FTP下载服务

    从Qt5开始,官方推荐使用QNetworkAccessManager进行Ftp和http的上传和下载操作:Qt4中使用的QtFtp模块即作为独立模块,需要自己从github上进行下载编译后使用(官方地 ...

  7. QNetworkAccessManager post()和get()方法

    GET方式提交的数据最多只能有1024字节,而POST则没有此限制. 大文件传输用post(),小文件用get(), 第一次接触Qt的Http项目,今天看了一下Post和Get的基本使用方法,就开始尝 ...

  8. Qt使用QNetworkAccessManager实现Ftp操作

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt使用QNetworkAccessManager实现Ftp操作     本文地址:http: ...

  9. Qt使用QNetworkAccessManager实现Http操作

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt使用QNetworkAccessManager实现Http操作     本文地址:http ...

随机推荐

  1. 关于webpack,babel,以及es6和commonJS之间的联系(转)

    add by zhj: babel是将es6转为es5,而webpack从名字也能看出来,是一个打包工具,根据文件之间的依赖关系,将文件进行打包 原文:https://blog.csdn.net/a2 ...

  2. B+树vs. LSM树(转)

    原文:<大型网站技术架构:核心原理与案例分析>,作者:李智慧 本书前面提到,由于传统的机械磁盘具有快速顺序读写.慢速随机读写的访问特性,这个特性对磁盘存储结构和算法的选择影响甚大. 为了改 ...

  3. IQ调制原理

    现代通信中,IQ调制基本上属于是标准配置,因为利用IQ调制可以做出所有的调制方式. 但是IQ调制到底是怎么工作的,为什么需要星座映射,成型滤波又是用来干嘛的.这个呢,讲通信原理的时候倒是都会泛泛的提到 ...

  4. OC常用控件封装

    #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface CreateUI : NSObject ...

  5. 004-RestTemplate 使用常见问题

    一.使用 同前三节:ClientGetGoodsByGoodsIdResponse response = restTemplate.postForObject(svcUrl, request, Res ...

  6. test TSS Work about

     activity01   activity02   FamilyNew   workTest

  7. pandas官方文档阅读收获

    1.当心它里面的简写: 第二张图中的输出实际上是等效于: df = df.drop() df 若只进行下面的操作,则drop操作不会起作用,因为它的inplace默认为False: df.drop() ...

  8. python中的0,None,False,空容器

    在Python中,None.空列表[].空字典{}.空元组().0等一系列代表空和无的对象会被转换成False.除此之外的其它对象都会被转化成True. 1.0等于False,这点要注意. 2.空的l ...

  9. MyBatis——一对多、一对一关系,collection、association

    实体类两个: user类: package com.pojo; /** *用户 */ public class User{ private int userId;//用户ID private Stri ...

  10. openshift node资源限制

    在oc的node配置文件中添加 ...... kubeletArguments: cgroups-per-qos: - "true" cgroup-driver: - " ...