作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 QtWebKit 4.7,并想知道框架加载何时进行重定向。
目前,我们正在计算 QNetworkAccessManager 子类中的传出请求,我们会覆盖 createRequest。
这在大多数情况下都可以正常工作,但是当第一个响应是 301 或 302(重定向)时,它就会被吞没在某个地方。
我们只需通过以下方式请求一个网址:
QNetworkRequest request(QUrl("http://www.twitter.com")); // 301 to twitter.com
frame->load(request);
最佳答案
自己处理 QNetworkReply,从回复中获取状态代码并执行 QWebFrame::setcontent。
QNetworkRequest request(QUrl("http://www.twitter.com")); // 301 to twitter.com
connect (frame->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*), this, SLOT(onFinished(QNetworkReply*));
frame->page()->networkAccessManager()->get(request);
[...]
void onFinished(QNetworkReply* reply)
{
if (reply->error() == QNetworkReply::NoError) {
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
switch (statusCode) {
case 301:
case 302:
case 307:
qDebug() << "redirected: " << reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
break;
case 200:
frame->setContent(reply->readAll());
break;
}
}
}
关于qt - 如何在 QtWebKit 中获取第一个重定向(301 或 302)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514287/
我是一名优秀的程序员,十分优秀!