2011-09-02 14 views
11

QtWebKit QWebPage::loadFinished (false) पर कॉल करता है जब कोई वेब पेज लोड करने में विफल रहता है - लेकिन यह क्यों विफल हुआ यह कोई संकेत नहीं देता है।QTWebKit पृष्ठ लोड करने में विफल होने पर विस्तृत त्रुटि संदेश कैसे प्राप्त करें?

मुझे HTTP प्रतिक्रिया कोड या अन्य संदेश जैसे विस्तृत त्रुटि संदेश कैसे प्राप्त हो सकता है?

+1

भी [कैसे HTTP स्थिति कोड की जाँच करने के] को देखने [1] [1]: http://stackoverflow.com/questions/4330274/qtwebkit-how-to-check-http-status-code –

उत्तर

11

यह बदल जाता है बाहर कई प्रकार हैं विफलताओं के बारे में और अधिक विस्तार पाने के लिए कर रहे हैं:

  • पृष्ठ पर onResourceRequested और onResourceReceived कॉलबैक लागू:

    page.onResourceRequested = function (resource) { 
        log('resource requested: ' + resource.url); 
    } 
    
    page.onResourceReceived = function (resource) { 
        log('resource received: ' + resource.status + ' ' + resource.statusText + ' ' + 
         resource.contentType + ' ' + resource.url); 
    } 
    
  • आप देख रहे हैं और अधिक विस्तार के लिए फिर भी, आपको फ़ैंटॉमजेएस आंतरिक को पैच करने की आवश्यकता है। QTWebKit के ErrorExtension को लागू करने के लिए अपनी कस्टमपृष्ठ ऑब्जेक्ट (WebPage.cpp में) अपडेट करें। यहाँ कोड आपको लगता है कि है कि करता है जोड़ सकते हैं:

    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 रद्दीकरण के लिए एक विफल अधिसूचना भेजता है, लेकिन किसी भी विवरण की रिपोर्ट नहीं करता है।

संबंधित मुद्दे