如何使用QWebEngine拦截HTML请求?

时间:2017-03-15 08:41:53

标签: c++ qt qtwebengine

QtWebKit中,我们可以使用QNetworkAccessManager,例如:

class NetworkAccessManager : public QNetworkAccessManager
{
public:
    explicit NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent);
protected:
    QNetworkReply * createRequest(QNetworkAccessManager::Operation operation,const QNetworkRequest &request, QIODevice *device);
};

我们可以实施QNetworkReply * createRequest()。在这种方法中我们可以得到:

  1. 操作(QNetworkAccessManager::Operation operation
  2. 请求(const QNetworkRequest &request
  3. 一些数据(QIODevice *device
  4. 从请求我们可以获取url,从“一些数据”我们可以从html获取一些数据(我不知道如何调用“某些数据”,所以我称之为“一些数据”)。

    QtWebEngine我们可以使用QWebEngineUrlRequestInterceptor获取操作和网址,例如:

    class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
    {
    public:
        WebUrlRequestInterceptor(QObject *p = Q_NULLPTR);
        void interceptRequest(QWebEngineUrlRequestInfo &info);
        ~WebUrlRequestInterceptor();
    };
    

    我们可以实现interceptRequest(QWebEngineUrlRequestInfo &info),在这个方法中我们有信息,我们可以获得信息

    1. 操作(info.requestMethod
    2. url(info.requestUrl
    3. 现在我想得到“一些数据”,我怎么能得到它?

0 个答案:

没有答案