- class QNetworkProxy#
QNetworkProxy
类提供一个网络层代理。 更多信息...摘要#
方法#
def
__init__()
def
capabilities()
def
hasRawHeader()
def
header()
def
hostName()
def
isCachingProxy()
def
__ne__()
def
__eq__()
def
password()
def
port()
def
rawHeader()
def
rawHeaderList()
def
setHeader()
def
setHostName()
def
setPassword()
def
setPort()
def
setRawHeader()
def
setType()
def
setUser()
def
swap()
定义
type()
定义
user()
静态函数#
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE 上创建一个产品问题报告来通知我们
详细描述#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
QNetworkProxy
为Qt网络类提供了配置网络层代理支持的函数。目前支持的类包括QAbstractSocket
,QTcpSocket
,QUdpSocket
,QTcpServer
和QNetworkAccessManager
。代理支持被设计得尽可能透明。这意味着您所编写的现有网络启用应用程序应自动支持网络代理,以下代码示例可见。proxy = QNetworkProxy() proxy.setType(QNetworkProxy.Socks5Proxy) proxy.setHostName("proxy.example.com") proxy.setPort(1080) proxy.setUser("username") proxy.setPassword("password") QNetworkProxy.setApplicationProxy(proxy)
设置应用程序范围代理的替代方法是使用
setProxy()
和setProxy()
指定个别套接字的代理。这样,您可以使用以下代码禁用特定套接字的代理使用。serverSocket.setProxy(QNetworkProxy.NoProxy)
当在
connectToHost()
、bind()
或listen()
中使用的地址与LocalHost
或LocalHostIPv6
相等时,不使用网络代理。每种代理支持都有关联的某些限制。在选择要使用的代理类型之前,应仔细阅读
ProxyType
文档。注意
对当前已连接套接字的更改不会生效。如果您需要更改一个连接套接字,您应重新连接它。
SOCKS5#
Qt 4开始支持的 SOCKS5 依赖于 RFC 1928 和 RFC 1929 。支持的认证方法是无认证和用户名/密码认证。支持 IPv4 和 IPv6。如果启用了
HostNameLookupCapability
,域名将通过 SOCKS5 服务器解析,否则在本地解析并将 IP 地址发送到服务器。使用 SOCKS5 时,与QUdpSocket
和QTcpServer
一起使用时有一些需要注意的事项使用
QUdpSocket
,对bind()
的调用可能因超时错误而失败。如果将除了 0 之外的端口号传给bind()
,则无法保证它将使用指定的端口。请使用localPort()
和localAddress()
获取实际正在使用的地址和端口号。因为经过代理的 UDP 需要通过两个 UDP 连接,所以数据包丢失的可能性更高。使用
QTcpServer
调用listen()
可能会因为超时错误而失败。如果向listen()
传递的不是 0 的端口号,那么它使用的不是指定的端口号就不再有保证。使用serverPort()
和serverAddress()
来获取用于监听连接的实际地址和端口号。SOCKS5 仅支持在每个listen()
调用中接受一个连接,并且每个调用可能会导致使用不同的serverPort()
。- class ProxyType#
此枚举描述了 Qt 中提供的网络代理类型。
Qt 理解两种类型的代理:透明代理和缓存代理。第一组包括可以处理任何任意数据传输的代理,而第二组只能处理特定的请求。缓存代理仅在可以使用的特定类中才有意义。
常量
描述
QNetworkProxy.NoProxy
不使用代理
QNetworkProxy.DefaultProxy
代理基于使用
setApplicationProxy()
设置的应用程序代理确定QNetworkProxy.Socks5Proxy
使用
Socks5
代理QNetworkProxy.HttpProxy
使用 HTTP 透明代理
QNetworkProxy.HttpCachingProxy
仅对 HTTP 请求进行代理
QNetworkProxy.FtpCachingProxy
仅对 FTP 请求进行代理
下表列出了不同的代理类型及其功能。由于每种代理类型都有不同的功能,因此在选择代理类型之前了解它们很重要。
代理类型
描述
默认功能
SOCKS 5
通用代理,可用于任何类型的连接。支持 TCP、UDP、绑定到端口(入站连接)和认证。
TunnelingCapability
(隧道能力),ListeningCapability
(监听能力),UdpTunnelingCapability
(UDP隧道能力),HostNameLookupCapability
(主机名查找能力)HTTP
通过使用“CONNECT”命令实现,仅支持出站TCP连接;支持验证。
TunnelingCapability
(隧道能力),CachingCapability
(缓存能力),HostNameLookupCapability
(主机名查找能力)仅缓存HTTP
通过普通HTTP命令实现,仅在HTTP请求语境中(参见
QNetworkAccessManager
)有用。CachingCapability
(缓存能力),HostNameLookupCapability
(主机名查找能力)缓存FTP
使用FTP代理实现,仅在FTP请求语境中(参见
QNetworkAccessManager
)有用。CachingCapability
(缓存能力),HostNameLookupCapability
(主机名查找能力)此外,请注意不要将应用程序默认代理(
setApplicationProxy()
)设置为不支持TunnelingCapability
能力的代理。如果您这样设置,QTcpSocket
将不知道如何打开连接。
- class Capability#
(继承自
enum.Flag
)这些标志表示特定代理服务器所支持的能力。QNetworkProxy
在对象创建时默认设置了不同的功能(有关默认值的列表,请参见ProxyType
)。然而,可以通过setCapabilities()
方法在对象创建后更改功能。QNetworkProxy
所支持的功能包括常量
描述
QNetworkProxy.TunnelingCapability
能够打开透明、隧道的 TCP 连接到远程主机。代理服务器将传输内容逐字逐句地从一侧传输到另一侧,并且不进行缓存。
QNetworkProxy.ListeningCapability
能够创建一个监听套接字并等待从远程主机传来的 TCP 连接。
QNetworkProxy.UdpTunnelingCapability
能够通过代理服务器转发和接收远程主机的 UDP 数据报。
QNetworkProxy.CachingCapability
能够缓存传输内容。此功能针对每个协议和代理类型特定。例如,HTTP 代理可以缓存使用“GET”命令传输的 Web 数据的内容。
QNetworkProxy.HostNameLookupCapability
能够连接到远程主机名执行查找操作并连接到它,而不是要求应用程序只执行名称查找和请求连接到 IP 地址。
QNetworkProxy.SctpTunnelingCapability
能够打开透明、隧道的 SCTP 连接到远程主机。
QNetworkProxy.SctpListeningCapability
能够创建一个监听套接字并等待从远程主机传来的 SCTP 连接。
- __init__(type[, hostName=""[, port=0[, user=""[, password=""]]]])#
- 参数:
type –
ProxyType
hostName – str
port – int
user – str
password – str
使用
type
、hostName
、port
、user
和password
构建一个QNetworkProxy
。type
代理类型的默认功能将自动设置。另请参阅
- __init__(other)
- 参数:
other –
QNetworkProxy
构建
other
的副本。- __init__()
使用
DefaultProxy
类型构建一个QNetworkProxy
。代理类型由
applicationProxy()
函数确定,默认为NoProxy
或者当系统配置了全局代理时使用全局代理。- 静态 applicationProxy()#
- 返回类型:
返回应用程序级别的网络代理。
如果
QAbstractSocket
或QTcpSocket
有DefaultProxy
类型,则此函数返回的QNetworkProxy
会被使用。- capabilities()#
- 返回类型:
Capability
组合
返回此代理服务器的功能。
另请参阅
- hasRawHeader(headerName)#
- 参数:
headerName –
QByteArray
- 返回类型:
bool
如果原始头
headerName
在此代理中使用,则返回true
。如果代理不是类型HttpProxy
或HttpCachingProxy
,则返回false
。- header(header)#
- 参数:
header –
KnownHeaders
- 返回类型:
对象
如果
header
所指的已知网络头在此代理中使用,则返回其值。如果不存在,则返回 QVariant()(即一个无效的变体)。- hostName()#
- 返回类型:
字符串
返回代理主机的名称。
另请参阅
- isCachingProxy()#
- 返回类型:
bool
如果此代理支持
CachingCapability
功能,则返回true
。在 Qt 4.4 中,该功能与代理类型相关联,但从 Qt 4.5 开始,可以通过调用
setCapabilities()
方法从代理中删除缓存功能。- isTransparentProxy()#
- 返回类型:
bool
如果此代理支持TCP连接的透明隧道传输,则返回
true
。这与TunnelingCapability
的能力匹配。在 Qt 4.4 中,该功能与代理类型相关联,但从 Qt 4.5 开始,可以通过调用
setCapabilities()
方法从代理中删除缓存功能。- __ne__(other)#
- 参数:
other –
QNetworkProxy
- 返回类型:
bool
比较此网络代理与
other
的值,如果它们不同则返回true
。- __eq__(other)#
- 参数:
other –
QNetworkProxy
- 返回类型:
bool
比较此网络代理与
other
的值,如果它们相等(代理类型、服务器以及用户名和密码相同)则返回true
。- password()#
- 返回类型:
字符串
返回用于认证的密码。
另请参阅
- port()#
- 返回类型:
int
返回代理主机的端口号。
- rawHeader(headerName)#
- 参数:
headerName –
QByteArray
- 返回类型:
返回头
headerName
的原始形式。如果不存在此类头或者代理类型不是HttpProxy
或HttpCachingProxy
,则返回一个空的 QByteArray,这可能与具有内容但为空的头部无法区分(使用hasRawHeader()
来判断是否存在此类头部)。可以使用
setRawHeader()
或setHeader()
设置原始头部。另请参阅
- rawHeaderList()#
- 返回类型:
QByteArray 对象列表
返回设置在此网络代理中的所有原始头部的列表。列表按头部的设置顺序排列。
如果代理类型不是
HttpProxy
或HttpCachingProxy
,则返回一个空的 QList。- 静态 setApplicationProxy(proxy)#
- 参数:
proxy –
QNetworkProxy
设置应用级别网络代理为
networkProxy
。如果
QAbstractSocket
或QTcpSocket
具有DefaultProxy
类型,则使用此函数设置的QNetworkProxy
。如果您想要在确定使用哪个代理方面获得更多灵活性,请使用QNetworkProxyFactory
类。使用此函数设置默认代理值将覆盖由
setApplicationProxyFactory
设置的程序代理工厂,并禁用系统代理的使用。另请参阅
QNetworkProxyFactory
applicationProxy()
setProxy()
setProxy()
- setCapabilities(capab)#
- 参数:
capab –
Capability
的组合
将此代理的能设置为一个
能力
列表。另请参阅
setType()
capabilities()
- setHeader(header, value)#
- 参数:
header –
KnownHeaders
value – 对象
将已知头
header
的值设置为value
,覆盖任何之前设置的头部。此操作还会设置等效的原始HTTP头。如果代理不是类型
HttpProxy
或HttpCachingProxy
,则此操作没有效果。- setHostName(hostName)#
- 参数:
hostName – str
设置代理主机的名字为
hostName
。另请参阅
- setPassword(password)#
- 参数:
password – str
设置代理认证密码为
password
。另请参阅
- setPort(port)#
- 参数:
port – int
设置代理主机的端口为
port
。- setRawHeader(headerName, value)#
- 参数:
headerName –
QByteArray
value –
QByteArray
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
设置头
headerName
的值为headerValue
。如果headerName
是已知的头(参见KnownHeaders
),将解析原始格式,同时设置对应的“ cooked”头。例如:
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"))
也会将已知的头 LastModifiedHeader 设置为解析的日期的 QDateTime 对象。
注意
重复设置相同的头会覆盖之前的设置。为了实现具有相同名称的多个 HTTP 头的行为,您应该将这两个值连接起来,用逗号(“,”)分隔,并设置一个单个的原始头。
如果代理不是类型
HttpProxy
或HttpCachingProxy
,则此操作没有效果。将此实例的代理类型设置为
type
。请注意,更改代理的类型不会改变此
QNetworkProxy
对象所拥有的功能集合,如果已经用setCapabilities()
设置了任何功能。另请参阅
- setUser(userName)#
- 参数:
userName - str
将代理认证的用户名设置为
user
。- swap(other)#
- 参数:
other –
QNetworkProxy
将此网络代理实例与
other
交换。此函数非常快且永远不会失败。返回此实例的代理类型。
另请参阅
- user()#
- 返回类型:
字符串
返回用于认证的用户名。