qt截获html请求(继承QNetworkAccessManager和QNetworkReply)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了qt截获html请求(继承QNetworkAccessManager和QNetworkReply),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2770字,纯文字阅读大概需要4分钟。
内容图文
![qt截获html请求(继承QNetworkAccessManager和QNetworkReply)](/upload/InfoBanner/zyjiaocheng/475/02d35c3383c34e288103064efbc33e16.jpg)
QtWebkit加载html页面,html中会有很多的请求,比如<img id="testImg" src="http://*.jpg" width="200" height="200" title="test图片"/>等等,如果想截获这些请求,然后自定义应答...
1.定义一个类,继承QNetworkAccessManager(请求) #ifndef NETWORKACCESSMANAGER_H #define NETWORKACCESSMANAGER_H #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkProxy> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QNetworkRequest> class NetworkAccessManager : public QNetworkAccessManager { Q_OBJECT public: explicit NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent); protected: QNetworkReply * createRequest(QNetworkAccessManager::Operation operation, const QNetworkRequest &request, QIODevice *device); }; #endif // NETWORKACCESSMANAGER_H #include "networkaccessmanager.h" #include <QtCore/QDebug> NetworkAccessManager::NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent) : QNetworkAccessManager(parent) { setCache(manager->cache()); setCookieJar(manager->cookieJar()); setProxy(manager->proxy()); setProxyFactory(manager->proxyFactory()); } QNetworkReply * NetworkAccessManager::createRequest(QNetworkAccessManager::Operation operation, const QNetworkRequest &request, QIODevice *device) { if (request.url().scheme() != "http") return QNetworkAccessManager::createRequest(operation, request, device); else return new BlobReply(request.url); } 2.定义一个类,继承QNetworkReply(应答) #ifndef BLOBREPLY_H #define BLOBREPLY_H #include <QtNetwork/QNetworkReply> class BlobReply : public QNetworkReply { Q_OBJECT public: BlobReply(const QUrl &url); void abort(); protected: qint64 readData(char *data, qint64 maxSize); }; #endif // BLOBREPLY_H #include "blobreply.h" #include <QtCore/QDebug> BlobReply::BlobReply(const QUrl &url) : QNetworkReply() { qDebug() << url.toString(); } void BlobReply::abort() { } qint64 BlobReply::readData(char *data, qint64 maxSize) { return -1; } 3.在初始化webview的时候,实例化上面的东东 QNetworkAccessManager *oldManager = ui->webView->page()->networkAccessManager(); NetworkAccessManager *newManager = new NetworkAccessManager(oldManager, this); ui->webView->page()->setNetworkAccessManager(newManager); ui->webView->page()->setForwardUnsupportedContent(true); 如有技术问题,请咨询博主QQ... http://blog.sina.com.cn/s/blog_671732440100y3xx.htmlqt截获html请求(继承QNetworkAccessManager和QNetworkReply)
标签:test sch com blob debug factory 实例 end tco
本文系统来源:http://www.cnblogs.com/findumars/p/6352718.html
内容总结
以上是互联网集市为您收集整理的qt截获html请求(继承QNetworkAccessManager和QNetworkReply)全部内容,希望文章能够帮你解决qt截获html请求(继承QNetworkAccessManager和QNetworkReply)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。