Hi Jocelyn, Thanks so much. It does return the QWebFrame associated with the request! Fabulous!
Regards, Alexandre Pretyman On Sun, Apr 1, 2012 at 2:26 PM, Jocelyn Turcotte <[email protected] > wrote: > Hi, > > it could certainly be that some error codes trigger different errors while > going through WebKit. > Meanwhile I remembered something you might be able to use, > QNetworkRequest::originatingObject. > http://qt-project.org/doc/qt-4.8/qnetworkrequest.html#originatingObject > > With it you should be able to find out which QWebFrame/Page was associated > with a QNetworkReply passed in QNetworkAcessManager::finished, through > QNetworkReply::request(). > > br, > Jocelyn > > > On Fri, 30 Mar 2012 12:40:17 -0300 > ext Alexandre Pretyman <[email protected]> wrote: > > > Hi Jocelyn, > > > > Thanks for answering, but I have indeed gone down that route, with no > > results, so I thought it wasn't the right way to go. > > > > I overload virtual bool supportsExtension ( Extension extension ) const; > > with: > > > > > > qDebug() << "SupportsExtension" << extension; > > > > return true; > > > > > > > > and I overload: virtual bool extension ( Extension extension, const > > ExtensionOption * option = 0, ExtensionReturn * output = 0 ); with: > > > > if (extension == ErrorPageExtension) > > > > { > > > > const ErrorPageExtensionOption * errorPageOption = > > static_cast<const ErrorPageExtensionOption *>(option); > > > > qDebug() << "ErrorPageExtensionOption domain:" << > > errorPageOption->domain << " errorString:" << > > errorPageOption->errorString > > > > << "error:" << errorPageOption->error << "URL:" << > > errorPageOption->url; > > > > } > > > > else // I know the message below is rubbish, it's just to print > > something if it gets there > > > > { > > > > qDebug() << "Untreated extension:" << extension << " opts: " > > << option << " output: " << output; > > > > } > > > > return true; > > > > > > And 100% positive they don't get called on HTTP status code 408 (for > > Operation Timed Out) and I don't remember it being called for HTTP status > > code 503 (Service Unavailable) either. > > > > And the only thing I have logged for this is: > > > > SupportsExtension 1 > > > > ErrorPageExtensionOption domain: 0 errorString: "Unknown error" error: > 205 > > > > Where: > > > > Extension 1 = QWebPage::ErrorPageExtension > > domain 0 = QWebPage::QtNetwork > > error 205 = QNetworkReply::ContentReSendError > > > > > > But, as mentioned above, never for 408. > > > > Any other hints? > > > > Regards > > > > On Fri, Mar 30, 2012 at 12:05 PM, Jocelyn Turcotte < > > [email protected]> wrote: > > > > > Hello list member, > > > > > > you could have a look at subclassing QWebPage and overriding > > > QWebPage::extension and QWebPage::supportsExtension ( > > > http://qt-project.org/doc/qt-4.8/qwebpage.html#extension ). > > > > > > Check for QWebPage::ErrorPageExtension and > > > ErrorPageExtensionOption::domain == QWebPage::Http and then you can > feed an > > > appropriate output to ErrorPageExtensionReturn::content from a local > file > > > or resource. > > > This method is intended for providing a custom error page to display, > but > > > you could also try to handle the error for your app in there. > > > > > > Worst case you can use different QNetworkAccessManagers, but you might > get > > > performance issues. Each of them might spawn threads of their own and I > > > think that there is no global limit for parallel connections, only > > > per-instance, so you might get scaling issues when using more than > 5-10 of > > > them under heavy load. > > > > > > br, > > > Jocelyn > > > > > > > > > On Fri, 30 Mar 2012 11:44:17 -0300 > > > ext Alexandre Pretyman <[email protected]> wrote: > > > > > > > Hi list, > > > > > > > > I'm using Qt 4.8 release from QtSDK 1.1.5 and the QtWebKit API that > comes > > > > with it. > > > > > > > > I'm checking the HTTP Status of a page loaded in a QWebFrame with > code as > > > > described in this StackOverflow post: > > > > > > > > http://stackoverflow.com/questions/4330274/qtwebkit-how-to-check-http-status-code > > > , > > > > which essentially tells me to connect to > > > > SIGNAL(finished(QNetworkReply*)) on the QNetworkAccessManager > assiciated > > > > with the QWebPage and examine reply->attribute(QNetworkRequest:: > > > > HttpStatusCodeAttribute) to get the HTTP status code > > > > > > > > This has been working well since I've been using a single QWebPage, > but > > > now > > > > I need more than one instance of QWebPage running. > > > > > > > > Since the recommended practice is to have one QNetworkAcessManager > per > > > > application, if I connect to SIGNAL(finished(QNetworkReply*)) , I > > > > understand I'll be getting QNetworkReply * from both instances, and > won't > > > > be able to differentiate which came from which. > > > > > > > > How can I overcome this? > > > > > > > > Regards, > > > > > > > > > > > > -- Alexandre Pretyman
_______________________________________________ webkit-qt mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt
