2011-09-02 24 views
11

QtWebKitは、Webページの読み込みに失敗したときにQWebPage::loadFinished (false)を呼び出しますが、失敗した理由については手がかりを与えません。QTWebKitがページの読み込みに失敗した場合の詳細なエラーメッセージの表示方法

HTTP応答コードなどの詳細なエラーメッセージを受け取るにはどうすればよいですか?

+1

また、[1] [1] [HTTPステータスコードの確認方法]を参照してください。http://stackoverflow.com/questions/4330274/qtwebkit-how-to-check-http-status-code –

答えて

11

それは、障害に関する詳細情報を取得するカップルの方法があり判明:あなたが詳細を探している場合

page.onResourceRequested = function (resource) { 
    log('resource requested: ' + resource.url); 
} 

page.onResourceReceived = function (resource) { 
    log('resource received: ' + resource.status + ' ' + resource.statusText + ' ' + 
     resource.contentType + ' ' + resource.url); 
} 
    • は、ページ上のonResourceRequestedonResourceReceivedコールバックを実装しますそれでもPhantomJS内部のパッチを適用する必要があります。 QTWebKitのErrorExtensionを実装するために、(WebPage.cppの)CustomPageオブジェクトを更新します。ここでは、それはありません追加できるコードがあることである:

      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はキャンセルの失敗通知を送信しますが、詳細は報告しません。

  • 関連する問題