QWebEngineUrlRequestInterceptor用来拦截网络请求,例如如果需要查看网页中发生了哪些get/post请求。
QWebEngineUrlRequestInterceptor是一个抽象类,意味着需要子类化它才能得到所需的内容,使用方法如下:
头文件:
class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{Q_OBJECTpublic: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 <a ping>";break;case 15:rsrct="ResourceTypeServiceWorker, // the main resource of a service worker.";break;case 16:rsrct="ResourceTypeUnknown";break;default : rsrct="Unknown type";break;}qDebug()<<" "<<Q_FUNC_INFO<<":" << "WebUrlRequestInterceptor::interceptRequest " <<info.requestMethod()<<""<<info.requestUrl()<<" "<<rsrct <<"
";}
为QWebEngineView设置拦截器:
RequestInterceptor *interceptor = new RequestInterceptor(webView);webView->page()->profile()->setRequestInterceptor(iterceptor);