QNetworkProxyFactory Class

QNetworkProxyFactory クラスは、きめ細かいプロキシ選択を提供します。詳細...

ヘッダ #include <QNetworkProxyFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

パブリック関数

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 のような、複数の接続をサポートする特定のフレームワークでも設定できます。このようなオブジェクトに設定すると、そのフレームワークで作成されたソケットに対してのみ、ファクトリーに問い合わせが行われます。

システムプロキシ

システムプロキシの設定を使用するようにファクトリーを構成することができます。この動作を有効にするには true を、無効にするには false を指定してsetUseSystemConfiguration() 関数を呼び出します。

同様に、systemProxyForQuery() 関数をコールすることで、 ファクトリを使用してシステムプロキシに直接問い合わせを行うこともできます。

警告 ユーザのシステムの構成によっては、特定のプラットフォームでシステム・プロキシ機能を使用することが制限される場合があります。systemProxyForQuery() のドキュメントに、影響を受けるプラットフォームに関する制限事項のリストが記載されています。

メンバ関数のドキュメント

QNetworkProxyFactory::QNetworkProxyFactory()

QNetworkProxyFactory オブジェクトを作成します。

QNetworkProxyFactory は抽象クラスなので、QNetworkProxyFactory 型のオブジェクトを直接作成することはできません。

[virtual noexcept] 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 オブジェクトのリストを返す。

このクラスを再実装する場合は、少なくとも1つの要素を返すように注意してください。

よりよいプロキシの代替を決定できない場合は、QNetworkProxy::DefaultProxy を使用します。これは、プロキシを問い合わせるコードに、より上位の代替を使用するように指示します。例えば、このファクトリーがQNetworkAccessManager オブジェクトに設定されている場合、DefaultProxy はアプリケーションレベルのプロキシ設定を問い合わせるように指示します。

このファクトリーがアプリケーションプロキシファクトリーとして設定されている場合、DefaultProxy と NoProxy は同じ意味になります。

[static] void QNetworkProxyFactory::setApplicationProxyFactory(QNetworkProxyFactory *factory)

アプリケーション全体のプロキシファクトリーをfactory に設定します。この関数はそのオブジェクトの所有権を持ち、必要に応じて削除する。

アプリケーション全体のプロキシは、他のすべてのプロキシ選択要求がQNetworkProxy::DefaultProxy を返したときの最後の手段として使用されます。例えば、QTcpSocket オブジェクトは QTcpSocket::setProxy でプロキシを設定できますが、何も設定されていない場合、この関数で設定されたプロキシ・ファクトリ・クラスが照会されます。

この関数でプロキシファクトリを設定した場合、QNetworkProxy::setApplicationProxy で設定されたアプリケーションレベルのプロキシはすべてオーバーライドされ、usesSystemConfiguration() はfalse を返します。

QNetworkProxy::setApplicationProxy()、QAbstractSocket::proxy()、QAbstractSocket::setProxy()も参照

[static] void QNetworkProxyFactory::setUseSystemConfiguration(bool enable)

プラットフォーム固有のプロキシ設定を有効にする。詳細はsystemProxyForQuery()を参照のこと。

enabletrue に設定してこの関数を呼び出すと、すでに設定されているプロキシやQNetworkProxyFactory はすべてリセットされる。

注意: システム・プロキシ使用に関する制限事項の一覧は、systemProxyForQuery() のドキュメントを参照。

[static] QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery())

この関数はクエリリクエストquery を受け取り、ソケットのタイプやリクエストの詳細を調べ、使用するプロキシサーバーを優先順位の高い順に示すQNetworkProxy オブジェクトのリストを返す。

この関数はプラットフォーム固有のプロキシ設定を決定するために使用できる。もしそのようなライブラリがあれば、この関数はオペレーティングシステムが提供する ライブラリを使用して、指定された接続のプロキシを決定する。存在しない場合、この関数はQNetworkProxy::NoProxy 型のQNetworkProxy を返します。

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 プラットフォームでは、ユーザーのシステム構成によっては、この関数の実行に数秒かかる場合があります。

[static] bool QNetworkProxyFactory::usesSystemConfiguration()

プラットフォーム固有のプロキシ設定が有効かどうかを返します。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.