Mar*_*tin 10 qt http-status-codes qtwebkit
我正在编写一个缩略图生成器,如QtWebkit文档中的示例所示.我想避免错误页面的截图,如404 not found或503 Internal server error.
但是,即使页面发出HTTP错误,也始终发出QWebPage :: loadFinished()信号ok = true.QtWebkit中有没有办法检查响应的HTTP状态代码?
Mar*_*tin 15
事实证明,您需要监视与QWebPage关联的QNetworkAccessManager并等待完成(...)信号.然后,您可以通过询问QNetworkRequest::HttpStatusCodeAttribute属性来检查HTTP响应并检查其状态代码.
在代码中更好地解释:
void MyClass::initWebPage()
{
myQWebPage = new QWebPage(this);
connect(
myQWebPage->networkAccessManager(), SIGNAL(finished(QNetworkReply *)),
this, SLOT(httpResponseFinished(QNetworkReply *))
);
}
void MyClass::httpResponseFinished(QNetworkReply * reply)
{
switch (reply->error())
{
case QNetworkReply::NoError:
// No error
return;
case QNetworkReply::ContentNotFoundError:
// 404 Not found
failedUrl = reply->request.url();
httpStatus = reply->attribute(
QNetworkRequest::HttpStatusCodeAttribute).toInt();
httpStatusMessage = reply->attribute(
QNetworkRequest::HttpReasonPhraseAttribute).toByteArray();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
还有更多NetworkErrors可供选择,例如TCP错误或HTTP 401.
| 归档时间: |
|
| 查看次数: |
9540 次 |
| 最近记录: |