本文整理汇总了C++中QNetworkProxy::capabilities方法的典型用法代码示例。如果您正苦于以下问题:C++ QNetworkProxy::capabilities方法的具体用法?C++ QNetworkProxy::capabilities怎么用?C++ QNetworkProxy::capabilities使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QNetworkProxy
的用法示例。
在下文中一共展示了QNetworkProxy::capabilities方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: delayedStart
void SslTlsSocket::delayedStart()
{
QSslSocket *sock = qobject_cast<QSslSocket *>(d);
Q_ASSERT(sock);
switch (m_proxySettings) {
case Streams::ProxySettings::RespectSystemProxy:
{
QNetworkProxy setting;
QNetworkProxyQuery query = QNetworkProxyQuery(host, port, m_protocolTag, QNetworkProxyQuery::TcpSocket);
// set to true if a capable setting is found
bool capableSettingFound = false;
// set to true if at least one valid setting is found
bool settingFound = false;
// FIXME: this static function works particularly slow in Windows
QList<QNetworkProxy> proxySettingsList = QNetworkProxyFactory::systemProxyForQuery(query);
/* Proxy Settings are read from the user's environment variables by the above static method.
* A peculiar case is with *nix systems, where an undefined environment variable is returned as
* an empty string. Such entries *might* exist in our proxySettingsList, and shouldn't be processed.
* One good check is to use hostName() of the QNetworkProxy object, and treat the Proxy Setting as invalid if
* the host name is empty. */
Q_FOREACH (setting, proxySettingsList) {
if (!setting.hostName().isEmpty()) {
settingFound = true;
// now check whether setting has capabilities
if (setting.capabilities().testFlag(QNetworkProxy::TunnelingCapability)) {
sock->setProxy(setting);
capableSettingFound = true;
break;
}
}
}
if (!settingFound || proxySettingsList.isEmpty()) {
sock->setProxy(QNetworkProxy::NoProxy);
} else if (!capableSettingFound) {
emit disconnected(tr("The underlying socket is having troubles when processing connection to %1:%2: %3")
.arg(host, QString::number(port), QStringLiteral("Cannot find proxy setting capable of tunneling")));
}
break;
}
case Streams::ProxySettings::DirectConnect:
sock->setProxy(QNetworkProxy::NoProxy);
break;
}
if (startEncrypted)
sock->connectToHostEncrypted(host, port);
else
sock->connectToHost(host, port);
}
示例2: main
int main(int argc, char** argv) {
// Parse options
// TODO: http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/classKCmdLineArgs.html
{
QStringList arguments = getCliArguments(argc, argv);
if ((arguments.indexOf("-h") != -1) || (arguments.indexOf("--help") != -1)) {
qDebug() << "QtWeb options:";
qDebug() << "";
qDebug() << "--maximize";
qDebug() << "";
qDebug() << "--url";
qDebug() << "--user-agent";
qDebug() << "--socks host:port";
qDebug() << "--socks-resolver";
qDebug() << "--extra-enabled";
return EXIT_SUCCESS;
}
int optionIndex = 0;
// maximize
if ((optionIndex = arguments.indexOf("--maximize")) != -1) {
options.maximize = true;
}
// url
if ((optionIndex = arguments.indexOf("--url")) != -1) {
options.url = arguments.at(optionIndex + 1);
}
// user agent
if ((optionIndex = arguments.indexOf("--user-agent")) != -1) {
options.userAgent = arguments.at(optionIndex + 1);
Wrapper::QWebPage::userAgent = options.userAgent;
}
// socks
if ((optionIndex = arguments.indexOf("--socks")) != -1) {
options.socks = arguments.at(optionIndex + 1);
}
// socks resolver
if ((optionIndex = arguments.indexOf("--socks-resolver")) != -1) {
options.socksResolver = true;
}
// enable extra
if ((optionIndex = arguments.indexOf("--extra-enabled")) != -1) {
options.extraEnabled = true;
}
qDebug() << "Maximize" << options.maximize;
qDebug() << "Load" << options.url;
qDebug() << "User-agent" << options.userAgent;
qDebug() << "Socks" << options.socks;
qDebug() << "Socks resolver" << options.socksResolver;
qDebug() << "Extra enabled" << options.extraEnabled;
}
QApplication a(argc, argv);
// release view
Lambda qHandler([&]() {
view.reset();
});
QObject::connect(&a, SIGNAL(aboutToQuit()), &qHandler, SLOT(call()));
view.reset(new QWebView);
view->setPage(new Wrapper::QWebPage);
// add "http://"
if (options.url.indexOf("://") == -1) {
options.url = QLatin1String("http://") + options.url;
}
// socks
if (options.socks.length()) {
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
int colonPosition = options.socks.lastIndexOf(":");
if (colonPosition == -1) {
qDebug() << "Malformed proxy (HOST:PORT is needed)";
return EXIT_FAILURE;
}
proxy.setHostName(options.socks.left(colonPosition));
proxy.setPort(options.socks.right(options.socks.length() - 1 - colonPosition).toInt());
if (options.socksResolver) {
proxy.setCapabilities(proxy.capabilities() | QNetworkProxy::HostNameLookupCapability);
} else {
proxy.setCapabilities(proxy.capabilities() & ~QNetworkProxy::HostNameLookupCapability);
}
view->page()->networkAccessManager()->setProxy(proxy);
qDebug() << "Proxy installed";
}
// Add inspector.
view->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
if (options.extraEnabled) {
view->page()->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
//.........这里部分代码省略.........