加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用QWebEngineUrlRequestInterceptor

发布时间:2020-12-16 10:03:28 所属栏目:百科 来源:网络整理
导读:我需要拦截在我们的Qt应用程序中的WebEngine qml组件中发出的请求. 我找到了关于QWebEngineUrlRequestInterceptor的文档,这里似乎就是这里http://doc.qt.io/qt-5/qwebengineprofile.html#details和这里http://doc.qt.io/qt-5/qwebengineurlrequestintercepto
我需要拦截在我们的Qt应用程序中的WebEngine qml组件中发出的请求.

我找到了关于QWebEngineUrlRequestInterceptor的文档,这里似乎就是这里http://doc.qt.io/qt-5/qwebengineprofile.html#details和这里http://doc.qt.io/qt-5/qwebengineurlrequestinterceptor.html#details.但是我没有找到任何关于如何在Qt / C中执行此操作的代码示例.

任何帮助表示赞赏.

解决方法

在这篇文章的帮助下管理拼图: https://forum.qt.io/topic/69135/how-to-send-network-requests-in-qwebengine/2

这是我连接QWebEngineUrlRequestInterceptor的解决方案:

.h文件

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 <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()<<"t"<<Q_FUNC_INFO<<":ntt" << "WebUrlRequestInterceptor::interceptRequest    " <<info.requestMethod()
         <<"rn  "<<info.requestUrl()<<"   "<<rsrct      <<"rn";

}

main.cpp文件

WebUrlRequestInterceptor *wuri = new WebUrlRequestInterceptor();
QWebEngineProfile::defaultProfile()->setRequestInterceptor(wuri);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读