Hi Jocelyn,<div><br></div><div>Thanks so much. It does return the QWebFrame associated with the request! Fabulous!</div><div><br></div><div>Regards,</div><div>Alexandre Pretyman <br><br><div class="gmail_quote">On Sun, Apr 1, 2012 at 2:26 PM, Jocelyn Turcotte <span dir="ltr"><<a href="mailto:jocelyn.turcotte@nokia.com" target="_blank">jocelyn.turcotte@nokia.com</a>></span> wrote:<br>

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