Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QtWebkit: How to check HTTP status code?

I'm writing a thumbnail generator as per an example in the QtWebkit documentation. I would like to avoid screenshots of error pages such as 404 not found or 503 Internal server error.

However, the QWebPage::loadFinished() signal is always emitted with ok = true even when the page gives an HTTP error. Is there a way in QtWebkit to check the HTTP status code on a response?

like image 852
Martin Avatar asked Dec 01 '10 23:12

Martin


1 Answers

This is what I'm using in a porting project. It checks the reply and decides to start backing off making request or not. The backing off part is in progress but I left the comments in.

QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
Q_CHECK_PTR(reply);

QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
if (!statusCode.isNull() && statusCode.toInt() >= 400){
    //INVALID_SERVER_RESPONSE_BACKOFF;
    qDebug() << "server returned invalid response." << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
    return;
}else if (!statusCode.isNull() && statusCode.toInt() != 200){
    //INVALID_SERVER_RESPONSE_NOBACKOFF;
    qDebug() << "server returned invalid response." << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();
    return;
}
like image 169
TealFawn Avatar answered Sep 27 '22 19:09

TealFawn