如何使用 QWebEngine 拦截 HTML 请求?

C.H*_*Hao 6 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);
};
Run Code Online (Sandbox Code Playgroud)

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

  1. 操作 ( QNetworkAccessManager::Operation operation)
  2. 请求 ( const QNetworkRequest &request)
  3. 一些数据 ( QIODevice *device)

从请求中我们可以得到url,从“一些数据”中我们可以从html中得到一些数据(我不知道如何调用“一些数据”,所以我称之为“一些数据”)。

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

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

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

  1. 操作 ( info.requestMethod)
  2. 网址 ( info.requestUrl)

现在我想得到“一些数据”,我怎样才能得到它?