如何使用QWebEngine拦截HTML请求?

问题描述 投票:4回答:1

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

根据请求,我们可以从“一些数据”中获取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

现在我想获取“一些数据”,如何获得它?

c++ qt qtwebengine
1个回答
0
投票

使用QWebEngine拦截上述问题与在StackOverflow上询问的上一个问题有关。

How to use QWebEngineUrlRequestInterceptor

© www.soinside.com 2019 - 2024. All rights reserved.