QNetworkProxyclass provides a network layer proxy. 更多 …
def
__eq__
(other)
def
__ne__
(other)
def
capabilities
()
def
hasRawHeader
(headerName)
def
header
(header)
def
hostName
()
def
isCachingProxy
()
def
isTransparentProxy
()
def
password
()
def
port
()
def
rawHeader
(headerName)
def
rawHeaderList
()
def
setCapabilities
(capab)
def
setHeader
(header, value)
def
setHostName
(hostName)
def
setPassword
(password)
def
setPort
(port)
def
setRawHeader
(headerName, value)
def
setType
(type)
def
setUser
(userName)
def
swap
(other)
def
type
()
def
user
()
def
applicationProxy
()
def
setApplicationProxy
(proxy)
QNetworkProxyprovides the method for configuring network layer proxy support to the Qt network classes. The currently supported classes areQAbstractSocket,QTcpSocket,QUdpSocket,QTcpServerandQNetworkAccessManager。代理支持被设计成尽可能透明。这意味着已编写的现有启用网络的应用程序,应该使用以下代码自动支持网络代理。proxy = QNetworkProxy() proxy.setType(QNetworkProxy.Socks5Proxy) proxy.setHostName("proxy.example.com") proxy.setPort(1080) proxy.setUser("username") proxy.setPassword("password") QNetworkProxy.setApplicationProxy(proxy)设置应用程序范围代理的备选方案是为各个套接字指定代理,使用
setProxy()andsetProxy(). In this way, it is possible to disable the use of a proxy for specific sockets using the following code:serverSocket.setProxy(QNetworkProxy.NoProxy)网络代理不会被使用,若地址用在
connectToHost(),bind()orlisten()相当于LocalHostorLocalHostIPv6.代理支持的各种类型都有与其关联的某些限定。应该阅读
ProxyType文档编制,在选择要使用的代理类型之前。注意
对目前已连接套接字所做的更改,不会生效。若需要更改已连接套接字,应重新连接它。
从 Qt4 起 SOCKS5 的支持基于 RFC 1928 and RFC 1929 。支持的身份验证方法是无身份验证和用户名/密码身份验证。IPv4 和 IPv6 均支持。通过 SOCKS5 服务器解析域名若
HostNameLookupCapability被启用,否则,在本地解析它们并把 IP 地址发送给服务器。有几件事要记住当使用 SOCKS5 采用QUdpSocketandQTcpServer:With
QUdpSocket调用bind()可能因超时错误而失败。若把非 0 端口号传递给bind(),不保证会使用指定端口。使用localPort()andlocalAddress()以获取在使用中的实际地址和端口号。由于被代理的 UDP 要通过 2 个 UDP 连接,数据包更有可能被丢弃。With
QTcpServer调用listen()可能因超时错误而失败。若把非 0 端口号传递给listen(),不保证会使用指定端口。使用serverPort()andserverAddress()以获取用于监听连接的实际地址和端口。SOCKS5 仅支持一个接受连接每次调用listen(),且每次调用都可能导致不同的serverPort()被使用。
QNetworkProxy
¶
QNetworkProxy(type[, hostName=””[, port=0[, user=””[, password=””]]]])
QNetworkProxy(other)
- param type
ProxyType- param hostName
unicode
- param password
unicode
- param port
quint16- param other
- param user
unicode
构造
QNetworkProxy
with
DefaultProxy
类型。
代理类型的确定通过
applicationProxy()
,其默认为
NoProxy
或系统范围代理,若配置了的话。
构造
QNetworkProxy
with
type
,
hostName
,
port
,
user
and
password
.
默认能力的代理类型
type
是自动设置的。
另请参阅
构造副本为
other
.
PySide2.QtNetwork.QNetworkProxy.
ProxyType
¶
此枚举描述 Qt 提供的网络代理类型。
Qt 理解的 2 种代理类型:透明代理和缓存代理。第 1 组由可以处理任意数据传输的代理组成,而第 2 组只能处理特定请求。缓存代理只对可以使用它们的特定类有意义。
|
常量 |
描述 |
|---|---|
|
QNetworkProxy.NoProxy |
不使用代理 |
|
QNetworkProxy.DefaultProxy |
基于应用程序代理设置确定代理,使用
|
|
QNetworkProxy.Socks5Proxy |
|
|
QNetworkProxy.HttpProxy |
使用 HTTP 透明代理 |
|
QNetworkProxy.HttpCachingProxy |
代理仅针对 HTTP 请求 |
|
QNetworkProxy.FtpCachingProxy |
代理仅针对 FTP 请求 |
下表列出了不同的代理类型及其能力。由于每种代理类型有不同能力,在选取代理类型之前理解它们很重要。
|
代理类型 |
描述 |
默认能力 |
|
SOCKS 5 |
用于任何连接种类的通用代理。支持 TCP、UDP、绑定到端口 (传入连接) 及身份验证。 |
|
|
HTTP |
Implemented using the “CONNECT” command, supports only outgoing TCP connections; supports authentication. |
|
|
仅缓存 HTTP |
使用正常 HTTP 命令实现,仅在 HTTP 请求上下文中有用 (见
|
|
|
缓存 FTP |
使用 FTP 代理实现,仅在 FTP 请求上下文中有用 (见
|
|
Also note that you shouldn’t set the application default proxy (
setApplicationProxy()
) to a proxy that doesn’t have the
TunnelingCapability
能力。若做了,
QTcpSocket
将不知道如何打开连接。
PySide2.QtNetwork.QNetworkProxy.
Capability
¶
这些标志指示给定代理服务器支持的能力。
QNetworkProxy
默认设置不同能力,当创建对象时 (见
ProxyType
了解默认值列表)。不管怎样,在对象已创建之后改变能力是可能的采用
setCapabilities()
.
The capabilities that
QNetworkProxy
supports are:
|
常量 |
描述 |
|---|---|
|
QNetworkProxy.TunnelingCapability |
能打开到远程主机的透明、隧道化 TCP 连接。代理服务器将从一侧到另一侧逐字传输且不进行缓存。 |
|
QNetworkProxy.ListeningCapability |
能创建监听套接字并等待来自远程主机的 TCP 连接。 |
|
QNetworkProxy.UdpTunnelingCapability |
能中继 UDP 数据报凭借代理服务器和远程主机。 |
|
QNetworkProxy.CachingCapability |
Ability to cache the contents of the transfer. This capability is specific to each protocol and proxy type. For example, HTTP proxies can cache the contents of web data transferred with “GET” commands. |
|
QNetworkProxy.HostNameLookupCapability |
能连接以履行查找远程主机名并连接到远程主机,而不是要求应用程序履行名称查找并只请求连接到 IP 地址。 |
|
QNetworkProxy.SctpTunnelingCapability |
能打开到远程主机的透明、隧道化 SCTP 连接。 |
|
QNetworkProxy.SctpListeningCapability |
能创建监听套接字并等待来自远程主机的传入 SCTP 连接。 |
PySide2.QtNetwork.QNetworkProxy.
applicationProxy
(
)
¶
返回应用程序级别的网络代理。
若
QAbstractSocket
or
QTcpSocket
拥有
DefaultProxy
类型,那么
QNetworkProxy
被返回通过使用此函数。
PySide2.QtNetwork.QNetworkProxy.
capabilities
(
)
¶
Capabilities
返回此代理服务器的能力。
另请参阅
PySide2.QtNetwork.QNetworkProxy.
hasRawHeader
(
headerName
)
¶
headerName
–
QByteArray
bool
返回
true
若原生头
headerName
被此代理使用。返回
false
若代理不是类型
HttpProxy
or
HttpCachingProxy
.
PySide2.QtNetwork.QNetworkProxy.
header
(
header
)
¶
header
–
KnownHeaders
object
返回已知网络 Header 头的值为
header
若它被此代理所用。若不存在,返回 QVariant() (即:无效变体)。
另请参阅
KnownHeaders
rawHeader()
setHeader()
PySide2.QtNetwork.QNetworkProxy.
hostName
(
)
¶
unicode
返回代理主机的主机名。
另请参阅
PySide2.QtNetwork.QNetworkProxy.
isCachingProxy
(
)
¶
bool
返回
true
若此代理支持
CachingCapability
能力。
在 Qt 4.4,能力被绑到代理类型,但从 Qt 4.5 起,移除代理缓存能力是可能的通过调用
setCapabilities()
.
PySide2.QtNetwork.QNetworkProxy.
isTransparentProxy
(
)
¶
bool
返回
true
若此代理支持透明隧道化的 TCP 连接。这匹配
TunnelingCapability
能力。
在 Qt 4.4,能力被绑到代理类型,但从 Qt 4.5 起,移除代理缓存能力是可能的通过调用
setCapabilities()
.
PySide2.QtNetwork.QNetworkProxy.
__ne__
(
other
)
¶
other
–
QNetworkProxy
bool
比较此网络代理的值与
other
并返回
true
若它们不同。
PySide2.QtNetwork.QNetworkProxy.
__eq__
(
other
)
¶
other
–
QNetworkProxy
bool
比较此网络代理的值与
other
并返回
true
若它们相等 (相同的代理类型、服务器及用户名 口令)
PySide2.QtNetwork.QNetworkProxy.
password
(
)
¶
unicode
返回用于身份验证的口令。
另请参阅
PySide2.QtNetwork.QNetworkProxy.
port
(
)
¶
quint16
返回代理主机的端口。
PySide2.QtNetwork.QNetworkProxy.
rawHeader
(
headerName
)
¶
headerName
–
QByteArray
QByteArray
返回 Header 头的原生形式为
headerName
。若不存在这种 Header 头或代理类型不是
HttpProxy
or
HttpCachingProxy
,空
QByteArray
被返回,可能难以区分存在但没有内容的 Header 头 (使用
hasRawHeader()
to find out if the header exists or not).
原生 Header 头可以被设置采用
setRawHeader()
or with
setHeader()
.
另请参阅
PySide2.QtNetwork.QNetworkProxy.
rawHeaderList
(
)
¶
返回在此网络代理中设置的所有原生 Header 头的列表。列表按 Header 头设置次序排列。
若代理不是类型
HttpProxy
or
HttpCachingProxy
空
QList
被返回。
PySide2.QtNetwork.QNetworkProxy.
setApplicationProxy
(
proxy
)
¶
proxy
–
QNetworkProxy
把应用程序级别的网络代理设为
networkProxy
.
若
QAbstractSocket
or
QTcpSocket
拥有
DefaultProxy
类型,那么
QNetworkProxy
采用此函数所用设置。若希望在确定使用哪种代理方面更具灵活性,使用
QNetworkProxyFactory
类。
通过此函数设置的默认代理值将覆盖应用程序代理工厂设置采用
setApplicationProxyFactory
,并禁用系统代理的使用。
PySide2.QtNetwork.QNetworkProxy.
setCapabilities
(
capab
)
¶
capab
–
Capabilities
将此代理的能力设为
capabilities
.
另请参阅
PySide2.QtNetwork.QNetworkProxy.
setHeader
(
header
,
value
)
¶
header
–
KnownHeaders
value – object
Sets the value of the known header
header
to be
value
,覆盖任何先前设置的 Header 头。此操作还设置等效原生 HTTP 头。
若代理不是类型
HttpProxy
or
HttpCachingProxy
这没有效果。
另请参阅
KnownHeaders
setRawHeader()
header()
PySide2.QtNetwork.QNetworkProxy.
setHostName
(
hostName
)
¶
hostName – unicode
把代理主机的主机名设为
hostName
.
另请参阅
PySide2.QtNetwork.QNetworkProxy.
setPassword
(
password
)
¶
password – unicode
把代理身份验证的口令设为
password
.
另请参阅
PySide2.QtNetwork.QNetworkProxy.
setPort
(
port
)
¶
port
–
quint16
把代理主机的端口设为
port
.
PySide2.QtNetwork.QNetworkProxy.
setRawHeader
(
headerName
,
value
)
¶
headerName
–
QByteArray
value
–
QByteArray
设置 Header 头
headerName
到值
headerValue
。若
headerName
对应已知 Header 头 (见
KnownHeaders
), the raw format will be parsed and the corresponding “cooked” header will be set as well.
例如:
request.setRawHeader("Last-Modified", "Sun, 06 Nov 1994 08:49:37 GMT")
还会把已知 LastModifiedHeader 头设为
QDateTime
剖析日期对象。
注意
Setting the same header twice overrides the previous setting. To accomplish the behaviour of multiple HTTP headers of the same name, you should concatenate the two values, separating them with a comma (“,”) and set one single raw header.
若代理不是类型
HttpProxy
or
HttpCachingProxy
这没有效果。
另请参阅
KnownHeaders
setHeader()
hasRawHeader()
rawHeader()
PySide2.QtNetwork.QNetworkProxy.
setType
(
type
)
¶
type
–
ProxyType
把此实例的代理类型设为
type
.
注意:更改代理类型不会改变设置能力由此
QNetworkProxy
对象保持的,如果有设置任何能力采用
setCapabilities()
.
另请参阅
PySide2.QtNetwork.QNetworkProxy.
setUser
(
userName
)
¶
userName – unicode
把代理身份验证的用户名设为
user
.
PySide2.QtNetwork.QNetworkProxy.
swap
(
other
)
¶
other
–
QNetworkProxy
交换此网络代理实例采用
other
。此函数非常快,且从不失败。
PySide2.QtNetwork.QNetworkProxy.
user
(
)
¶
unicode
返回用于身份验证的用户名。