【问题标题】:How to get detailed error message when QTWebKit fails to load a page?QTWebKit 无法加载页面时如何获取详细的错误消息?
【发布时间】:2015-02-04 05:07:56
【问题描述】:

当网页加载失败时,QtWebKit 会调用 QWebPage::loadFinished ( false ) - 但不提供失败原因的线索。

如何获取详细的错误消息,例如 HTTP 响应代码或其他消息?

【问题讨论】:

标签: qtwebkit


【解决方案1】:

事实证明,有几种方法可以获取有关失败的更多详细信息:

  • 在页面上实现onResourceRequestedonResourceReceived 回调:

    page.onResourceRequested = function (resource) {
        log('resource requested: ' + resource.url);
    }
    
    page.onResourceReceived = function (resource) {
        log('resource received: ' + resource.status + ' ' + resource.statusText + ' ' +
            resource.contentType + ' ' + resource.url);
    }
    
  • 如果您还在寻找更多细节,则需要修补 PhantomJS 内部。更新其 CustomPage 对象(在 WebPage.cpp 中)以实现 QTWebKit 的 ErrorExtension。这是您可以添加的代码:

    protected: 
      bool supportsExtension(Extension extension) const {
        if (extension == QWebPage::ErrorPageExtension)
        {
            return true;
        }
        return false;
    }
    
    bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0)
    {
        if (extension != QWebPage::ErrorPageExtension)
            return false;
    
        ErrorPageExtensionOption *errorOption = (ErrorPageExtensionOption*) option;
        std::cerr << "Error loading " << qPrintable(errorOption->url.toString())  << std::endl;
        if(errorOption->domain == QWebPage::QtNetwork)
            std::cerr << "Network error (" << errorOption->error << "): ";
        else if(errorOption->domain == QWebPage::Http)
            std::cerr << "HTTP error (" << errorOption->error << "): ";
        else if(errorOption->domain == QWebPage::WebKit)
            std::cerr << "WebKit error (" << errorOption->error << "): ";
    
        std::cerr << qPrintable(errorOption->errorString) << std::endl;
    
        return false;
    }
    

这将为您提供大部分错误信息,但您仍然可以获得onLoadFinished(success=false) 事件而无需获得更多详细信息。根据我的研究,造成这些的主要原因是取消加载请求。 QTWebKit 发送取消失败通知,但不报告任何细节。

【讨论】:

    猜你喜欢
    • 2022-08-23
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多