QNetworkProxyFactory 類提供細粒度代理選擇。 更多...
| 頭: | #include <QNetworkProxyFactory> |
| qmake: | QT += network |
| Since: | Qt 4.5 |
該類在 Qt 4.5 引入。
| QNetworkProxyFactory () | |
| virtual | ~QNetworkProxyFactory () |
| virtual QList<QNetworkProxy> | queryProxy (const QNetworkProxyQuery & query = QNetworkProxyQuery()) = 0 |
| QList<QNetworkProxy> | proxyForQuery (const QNetworkProxyQuery & query ) |
| void | setApplicationProxyFactory (QNetworkProxyFactory * factory ) |
| void | setUseSystemConfiguration (bool enable ) |
| QList<QNetworkProxy> | systemProxyForQuery (const QNetworkProxyQuery & query = QNetworkProxyQuery()) |
| bool | usesSystemConfiguration () |
QNetworkProxyFactory 是擴展為 QNetworkProxy ,允許應用程序對使用哪種代理服務器有更細粒度控製 (從屬套接字請求代理)。例如,這允許應用程序根據協議或目標主機名應用不同設置。
可以為應用程序全局設置 QNetworkProxyFactory,在這種情況下,將覆蓋任何全局代理設置采用 QNetworkProxy::setApplicationProxy ()。若全局設置,則任何采用 Qt 創建的套接字都將查詢工廠以確定要使用的代理。
也可以在支持多個連接的某些框架中設置工廠,譬如 QNetworkAccessManager 。當在這種對象上設置時,將隻查詢由該框架創建的套接字的工廠。
可以把工廠配置為使用係統代理的設置。調用 setUseSystemConfiguration () 函數采用 true 以啓用此行為,或 false 以禁用此行為。
同樣,可以使用工廠以直接查詢係統代理通過調用其 systemProxyForQuery () 函數。
警告: 從屬用戶係統配置,在某些平颱使用的係統代理特徵可能會受到限製。 systemProxyForQuery () 文檔編製包含那些受影響平颱的局限性列錶。
創建 QNetworkProxyFactory 對象。
由於 QNetworkProxyFactory 是抽象類,因此無法直接創建 QNetworkProxyFactory 類型的對象。
[虛擬]
QNetworkProxyFactory::
~QNetworkProxyFactory
()
銷毀 QNetworkProxyFactory 對象。
[static]
QList
<
QNetworkProxy
> QNetworkProxyFactory::
proxyForQuery
(const
QNetworkProxyQuery
&
query
)
此函數接受查詢請求 query ,審查套接字或請求類型的細節,並返迴列錶為 QNetworkProxy 對象 (按首選次序指示要使用的代理服務器)。
[pure virtual]
QList
<
QNetworkProxy
> QNetworkProxyFactory::
queryProxy
(const
QNetworkProxyQuery
&
query
= QNetworkProxyQuery())
此函數接受查詢請求 query ,審查套接字或請求類型的細節,並返迴列錶為 QNetworkProxy 對象 (按首選次序指示要使用的代理服務器)。
當重實現此類時,小心至少要返迴一元素。
若無法確定更好的代理替代,使用 QNetworkProxy::DefaultProxy ,它告訴代碼查詢代理以使用更高替代。例如,若把此工廠設置給 QNetworkAccessManager 對象,DefaultProxy 將告訴它以查詢應用程序級代理設置。
若此工廠被設置為應用程序代理工廠,DefaultProxy 和 Noproxy 將擁有相同含義。
[static]
void
QNetworkProxyFactory::
setApplicationProxyFactory
(
QNetworkProxyFactory
*
factory
)
把應用程序範圍代理工廠設為 factory 。此函數將擁有該對象的所有權,且會刪除它當有必要時。
應用程序範圍代理被用作最後手段,當所有其它代理選擇請求返迴 QNetworkProxy::DefaultProxy 。例如, QTcpSocket 對象可以擁有代理設置采用 QTcpSocket::setProxy ,但若設為 none,將查詢采用此函數設置的代理工廠類。
若采用此函數設置代理工廠,則任何應用程序級代理設置采用
QNetworkProxy::setApplicationProxy
將被覆寫,且
usesSystemConfiguration
() 會返迴
false
.
另請參閱 QNetworkProxy::setApplicationProxy (), QAbstractSocket::proxy (),和 QAbstractSocket::setProxy ().
[static]
void
QNetworkProxyFactory::
setUseSystemConfiguration
(
bool
enable
)
啓用特定平颱代理設置的使用,且隻使用那些。見 systemProxyForQuery () 瞭解更多信息。
調用此函數采用
enable
設為
true
重置任何代理或
QNetworkProxyFactory
已經設置。
注意: 見 systemProxyForQuery () 文檔編製,瞭解使用係統代理的相關局限性列錶。
該函數在 Qt 4.6 引入。
[static]
QList
<
QNetworkProxy
> QNetworkProxyFactory::
systemProxyForQuery
(const
QNetworkProxyQuery
&
query
= QNetworkProxyQuery())
此函數接受查詢請求 query ,審查套接字或請求類型的細節,並返迴列錶為 QNetworkProxy 對象 (按首選次序指示要使用的代理服務器)。
此函數可用於確定特定於平颱的代理設置。此函數將使用由操作係統提供的庫來確定給定連接的代理,若存在這種庫。若不存在,此函數將僅僅返迴 QNetworkProxy 類型 QNetworkProxy::NoProxy .
在 Windows,此函數將使用 WinHTTP DLL 功能。不管它的名稱,Microsoft 建議所有要求網絡連接的應用程序都使用它,而不僅僅是 HTTP。這會考慮采用 proxycfg.exe 工具在注冊錶中設置的代理設置。若找不到這些設置,此函數將嘗試獲得 Internet Explorer 設置並使用它們。
在 macOS,此函數將使用 SystemConfiguration 框架從 Apple 獲得代理設置。它將分彆為包含 ftp、http 和 https 協議標簽的查詢應用 FTP、HTTP 和 HTTPS 代理配置。若在該配置中啓用 SOCKS 代理,此函數將為所有查詢使用 SOCKS 服務器。若 SOCKS 未啓用,它將為所有 TcpSocket 和 UrlRequest 查詢使用 HTTPS 代理。
在其它係統,此函數將從 http_proxy 環境變量中拾取代理設置。該變量必須是使用以下方案之一的 URL:http、socks5 或 socks5h。
這些是此函數當前版本的局限性。未來版本的 Qt 可能消除這裏列齣的某些局限性。
[static]
bool
QNetworkProxyFactory::
usesSystemConfiguration
()
返迴是否已啓用特定平颱代理設置的使用。
該函數在 Qt 5.8 引入。