class QNetworkProxyFactory#

QNetworkProxyFactory 类提供了精细的代理选择。...

简介#

方法#

  • __init__()

虚函数#

  • queryProxy()

静态函数#

  • proxyForQuery()

  • setApplicationProxyFactory()

  • setUseSystemConfiguration()

  • systemProxyForQuery()

  • usesSystemConfiguration()

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们一直欢迎对片段翻译的贡献。如果您看到翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们。

详细描述#

QNetworkProxyFactory 是对 QNetworkProxy 的扩展,允许应用程序更加精确地控制根据请求代理的套接字使用哪些代理服务器。这使得应用程序可以根据协议或目标主机名应用不同的设置。

QNetworkProxyFactory 可以为一个应用程序全局设置,在这种情况下,它将覆盖使用 setApplicationProxy() 设置的任何全局代理。如果全局设置,任何使用Qt创建的套接字都将查询工厂以确定要使用的代理。

还可以在某些支持多个连接的框架中设置工厂,例如 QNetworkAccessManager 。在设置为此类对象时,将对该框架创建的套接字进行查询。

系统代理#

您可以配置工厂以使用系统代理的设置。通过使用 true 启用此行为或 false 禁用它来调用 setUseSystemConfiguration() 函数。

类似地,您可以通过调用它的 systemProxyForQuery() 函数,使用工厂直接向系统代理进行查询。

警告

根据用户的系统配置,在某些平台上使用系统代理的特性可能会有一些限制。有关影响这些平台的限制的列表,请参考 systemProxyForQuery() 的文档。

__init__()#

创建一个 QNetworkProxyFactory 对象。

由于 QNetworkProxyFactory 是一个抽象类,您不能直接创建该类型的对象。

static proxyForQuery(query)#
参数:

queryQNetworkProxyQuery

返回类型:

列表 QNetworkProxy

此函数接受查询请求,query,检查套接字或请求类型的详细信息,并按优先级返回一个表示要使用的代理服务器的 QNetworkProxy 对象的列表。

抽象 queryProxy([query=QNetworkProxyQuery()])#
参数:

queryQNetworkProxyQuery

返回类型:

列表 QNetworkProxy

此函数接受查询请求,query,检查套接字或请求类型的详细信息,并按优先级返回一个表示要使用的代理服务器的 QNetworkProxy 对象的列表。

在重写此类时,请务必返回至少一个元素。

如果无法确定更好的代理替代方案,请使用 DefaultProxy ,它告诉查询代理的代码使用更高级别的替代方案。例如,如果此工厂设置为 QNetworkAccessManager 对象,则默认代理将指示其查询应用程序级别的代理设置。

如果此工厂设置为应用程序代理工厂,则 DefaultProxy 和 NoProxy 将具有相同的意义。

static setApplicationProxyFactory(factory)#
参数:

factoryQNetworkProxyFactory

设置应用程序范围的代理工厂为 factory。此函数将获取该对象的访问权限,并在必要时删除它。

当所有其他代理选择请求都返回 DefaultProxy 时,将使用应用程序范围的代理作为最后的选择。例如,QTcpSocket 对象可以通过 QTcpSocket::setProxy 设置代理,但如果未设置,则将查询通过此函数设置的代理工厂类。

如果您使用此函数设置代理工厂,则使用 setApplicationProxy 设置的应用程序级代理将被覆盖,并且 usesSystemConfiguration() 将返回 false

static setUseSystemConfiguration(enable)#
参数:

enable – bool

启用平台特定的代理设置,仅使用这些设置。有关更多信息,请参阅 systemProxyForQuery()

enable 设置为 true 时调用此函数将重置任何代理或 QNetworkProxyFactory

注意

有关使用系统代理的限制列表,请参阅 systemProxyForQuery() 的文档。

static systemProxyForQuery([query=QNetworkProxyQuery()])#
参数:

queryQNetworkProxyQuery

返回类型:

列表 QNetworkProxy

此函数接受查询请求,query,检查套接字或请求类型的详细信息,并按优先级返回一个表示要使用的代理服务器的 QNetworkProxy 对象的列表。

此函数可用于确定特定平台下的代理设置。如果存在这样的库,此函数将使用操作系统提供的库来确定给定连接的代理。如果没有,此函数将仅返回一个类型为 QNetworkProxyNoProxy 代理。

在Windows上,此函数将使用WinHTTP DLL函数。尽管其名称如此,但Microsoft建议它适用于所有需要网络连接的应用程序,而不仅仅是HTTP。这将尊重使用proxycfg.exe工具在注册表中设置的代理设置。如果找不到这些设置,此函数将尝试获取Internet Explorer的设置并使用它们。

在macOS上,此函数将使用Apple的CFNetwork框架获取代理设置。它将为包含“ftp”、“http”和“https”协议标记的查询分别应用FTP、HTTP和HTTPS代理配置。如果该配置中启用了SOCKS代理,则此函数将为所有查询使用SOCKS服务器。如果SOCKS未启用,则将为所有TcpSocket和UrlRequest查询使用HTTPS代理。

在配置了libproxy支持的系统上,此函数将依赖于libproxy获取代理设置。根据libproxy的配置,它可以反过来委托到桌面设置、环境变量等。

在其他系统上,此函数将从“http_proxy”环境变量获取代理设置。此变量必须使用以下一个方案为URL:“http”、“socks5”或“socks5h”。

局限性#

以下是此函数当前版本的局限性。Qt的未来版本可能会放宽此处列出的某些限制。

  • 在Windows平台,此函数的执行可能需要几秒钟,具体取决于用户系统的配置。

静态 usesSystemConfiguration()#
返回类型:

bool

返回是否启用使用平台特定的代理设置。