有没有简单的方法来设置QWebView类正在使用的User-Agent?
我找到的唯一相关链接是
http://www.qtforum.org/article/27073/how-to-set-user-agent-in-qwebview.html
我现在正在学习C ++ / Qt,而且我并不了解该网站上的解释。也许有人知道一个简单的方法吗?或者可以帮助我理解代码?
答案 0 :(得分:13)
Qt允许您根据URL而不是单个用户代理提供用户代理,无论URL是什么。然后,想法是在创建新网页时返回用户代理:
class UserAgentWebPage : public QWebPage {
QString userAgentForUrl(const QUrl &url ) const {
return QString("My User Agent");
}
};
为了使用该页面而不是创建的标准页面,您可以在发出请求之前在浏览器控件对象上设置该页面:
yourWebView->setPage(new UserAgentWebPage(parent));
我实际上希望工厂出现在哪里可以保证创建的网页总是某种类型,但我没有看到。
另一个选项应该是在QNetworkRequest:
中设置用户代理标头QNetworkRequest request = new QNetworkRequest();
request->setRawHeader(
QString("User-Agent").toAscii(),
QString("Your User Agent").toAscii()
);
// ... set the URL, etc.
yourWebView->load(request);
您实际上想要检查它是toAscii()
还是toUtf8()
还是其他变种之一,因为我不确定HTTP标准允许的是什么。
答案 1 :(得分:2)
简单地,
class myWebPage : public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const {
return "your user agent";
}
};
//Attention here is new myWebPage() not new myWebPage(parent)
UI->webView->setPage(new myWebPage());