如何使用QT QWebView管理代理

4

这是我如何更改代理:

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("ip");
proxy.setPort(8008);

QNetworkProxy::setApplicationProxy(proxy);

如果在创建WebView之前更改代理,它将正常工作。但是,如果在QWebView的生命周期内更改代理,则无法加载任何站点。在QT中更改代理的正确方法是什么?
谢谢。

QNetworkProxy文档中的一条注释指出:“注意:对当前已连接的套接字所做的更改不会生效。如果您需要更改已连接的套接字,应该重新连接它。” 另外,您尝试过webview->page()->networkAccessManager()->setProxy(proxy)吗? - Abhijith
1个回答

5

QWebPage::setNetworkAccessManager 方法文档指出:

注意:在 QWebPage 使用 Network Access Manager 之后,目前不支持更改 Network Access Manager。这样做的结果是未定义的。

因此,我的猜测是一旦设置了应用程序范围内的代理,并且构建了 QWebPage,它会获取一个 QNetworkAccessManager,您无法更改其代理设置。

作为使用应用程序范围代理的替代方案,您可能可以创建一个新的 QNetworkAccessManager,并使用其 QNetworkAccessManager::setProxy() 方法设置代理。然后将此 QNetworkAccessManager 实例传递给您的网页。

无论如何,您需要尝试一下。希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接