QT之QWebEngineUrlRequestInterceptor

        QWebEngineUrlRequestInterceptor用来拦截网络请求,例如如果需要查看网页中发生了哪些get/post请求。

        QWebEngineUrlRequestInterceptor是一个抽象类,意味着需要子类化它才能得到所需的内容,使用方法如下:

头文件:

class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
    Q_OBJECT

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

CPP文件:

WebUrlRequestInterceptor::WebUrlRequestInterceptor(QObject *p)
  :QWebEngineUrlRequestInterceptor(p)
{

}
void WebUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
    QString rsrct = "";
    switch(info.resourceType()){
        case 0:rsrct="ResourceTypeMainFrame = 0, // top level page";break;
        case 1:rsrct="ResourceTypeSubFrame, // frame or iframe";break;
        case 2:rsrct="ResourceTypeStylesheet, // a CSS stylesheet";break;
        case 3:rsrct="ResourceTypeScript, // an external script";break;
        case 4:rsrct="ResourceTypeImage, // an image (jpg/gif/png/etc)";break;
        case 5:rsrct="ResourceTypeFontResource, // a font";break;
        case 6:rsrct="ResourceTypeSubResource, // an other subresource.";break;
        case 7:rsrct="ResourceTypeObject, // an object (or embed) tag for a plugin,";break;
        case 8:rsrct="ResourceTypeMedia, // a media resource.";break;
        case 9:rsrct="ResourceTypeWorker, // the main resource of a dedicated worker.";break;
        case 10:rsrct="ResourceTypeSharedWorker, // the main resource of a shared worker.";break;
        case 11:rsrct="ResourceTypePrefetch, // an explicitly requested prefetch";break;
        case 12:rsrct="ResourceTypeFavicon, // a favicon";break;
        case 13:rsrct="ResourceTypeXhr, // a XMLHttpRequest";break;
        case 14:rsrct="ResourceTypePing, // a ping request for ";break;
        case 15:rsrct="ResourceTypeServiceWorker, // the main resource of a service worker.";break;
        case 16:rsrct="ResourceTypeUnknown";break;

        default : rsrct="Unknown type";break;
    }

  qDebug()<<"	"<

为QWebEngineView设置拦截器:

    RequestInterceptor *interceptor = new RequestInterceptor(webView);
    webView->page()->profile()->setRequestInterceptor(iterceptor);

你可能感兴趣的:(QT,qt,开发语言)