出于某些原因,我想为我的每一个请求更改我的dns!我使用Qt 5.3和QtWebkit!我搜索但我找不到任何可以帮助我的东西!
实际上QDnsLookup不能强制QtWebkit将其load()函数设置为使用特定的查找,它最后使用系统Dns设置!
有什么想法吗?!
答案 0 :(得分:0)
创建自己的QNAM子类和QWebPage子类。在那里实现DNS解析器。然后为您创建的每个QWebPage设置它。这样您就可以完全控制WebKit中发生的事情。 为了确保所有WebPages也将获得QNAM,子类QWebView并将QWebPage子类设置为构造函数中的页面。同时重载createWindow函数,以便将所有新的QWebView页面(如弹出窗口)创建为QWebView子类。
YourWebView::YourWebView(QWidget *parent):QWebView(parent)
{
this->setPage(new YourWebPageSubclass());
...
QWebView * YourWebView::createWindow(QWebPage::WebWindowType type)
{
YourWebView * view = Q_NULLPTR;
switch(type)
{
case QWebPage::WebBrowserWindow:
view = new YourWebView(0);
break;
case QWebPage::WebModalDialog:
view = new YourWebView(0);
view->setWindowModality(Qt::ApplicationModal);
break;
}
return view;
}
YourWebPageSubclass::YourWebPageSubclass(QObject *parent):QWebPage(parent)
{
this->setNetworkAccessManager(new YourQNAM(this));
...