QNetworkProxyFactory 類

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:: ~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 可能消除這裏列齣的某些局限性。

  • 在 macOS,此函數會忽略 Proxy Auto Configuration (代理自動配置) 設置,因為它不能執行關聯 ECMAcript 代碼。
  • 在 Windows 平颱,此函數可能需要幾秒鍾來執行 (取決於用戶的係統配置)。

[static] bool QNetworkProxyFactory:: usesSystemConfiguration ()

返迴是否已啓用特定平颱代理設置的使用。

該函數在 Qt 5.8 引入。