QNetworkProxy Class
QNetworkProxy クラスは、ネットワーク・レイヤーのプロキシを提供します。詳細...
ヘッダ | #include <QNetworkProxy> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 継承メンバを含む全メンバのリスト
- QNetworkProxy はNetwork Programming APIおよびImplicitly Shared Classes に含まれています。
メモ:このクラスの関数はすべてリエントラントです。
パブリック・タイプ
flags | Capabilities |
enum | Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability } |
enum | ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy } |
パブリック関数
QNetworkProxy() | |
QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString()) | |
QNetworkProxy(const QNetworkProxy &other) | |
~QNetworkProxy() | |
QNetworkProxy::Capabilities | capabilities() const |
bool | hasRawHeader(const QByteArray &headerName) const |
QVariant | header(QNetworkRequest::KnownHeaders header) const |
(since 6.8) QHttpHeaders | headers() const |
QString | hostName() const |
bool | isCachingProxy() const |
bool | isTransparentProxy() const |
QString | password() const |
quint16 | port() const |
QByteArray | rawHeader(const QByteArray &headerName) const |
QList<QByteArray> | rawHeaderList() const |
void | setCapabilities(QNetworkProxy::Capabilities capabilities) |
void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) |
(since 6.8) void | setHeaders(QHttpHeaders &&newHeaders) |
(since 6.8) void | setHeaders(const QHttpHeaders &newHeaders) |
void | setHostName(const QString &hostName) |
void | setPassword(const QString &password) |
void | setPort(quint16 port) |
void | setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) |
void | setType(QNetworkProxy::ProxyType type) |
void | setUser(const QString &user) |
void | swap(QNetworkProxy &other) |
QNetworkProxy::ProxyType | type() const |
QString | user() const |
bool | operator!=(const QNetworkProxy &other) const |
QNetworkProxy & | operator=(const QNetworkProxy &other) |
bool | operator==(const QNetworkProxy &other) const |
静的パブリック・メンバ
QNetworkProxy | applicationProxy() |
void | setApplicationProxy(const QNetworkProxy &networkProxy) |
詳細説明
QNetworkProxy は、Qt ネットワーククラスへのネットワークレイヤプロキシサポートを設定するメソッドを提供します。現在サポートされているクラスはQAbstractSocket,QTcpSocket,QUdpSocket,QTcpServer,QNetworkAccessManager です。プロキシ・サポートは可能な限り透過的になるように設計されています。つまり、既存のネットワーク対応アプリケーションは、以下のコードを使用することで、自動的にネットワーク・プロキシをサポートするようになります。
QNetworkProxy proxy; proxy.setType(QNetworkProxy::Socks5Proxy); proxy.setHostName("proxy.example.com"); proxy.setPort(1080); proxy.setUser("username"); proxy.setPassword("password"); QNetworkProxy::setApplicationProxy(proxy);
アプリケーション全体のプロキシを設定する代わりに、QAbstractSocket::setProxy ()とQTcpServer::setProxy ()を使用して、個々のソケットのプロキシを指定することもできます。この方法では、以下のコードを使用して、特定のソケットに対するプロキシ の使用を無効にすることができる:
serverSocket->setProxy(QNetworkProxy::NoProxy);
connectToHost ()、bind ()、listen ()で使用されているアドレスがQHostAddress::LocalHost またはQHostAddress::LocalHostIPv6 と等しい場合、ネットワーク・プロキシは使用されない。
各タイプのプロキシ・サポートには一定の制限があります。使用するプロキシ・タイプを選択する前に、ProxyType のドキュメントを注意深く読むべきである。
注意: 現在接続しているソケットに加えた変更は反映されない。接続中のソケットを変更する必要がある場合は、再接続してください。
SOCKS5
Qt 4 以降の SOCKS5 サポートは、RFC 1928とRFC 1929 に基づいています。サポートされている認証方法は、認証なしとユーザー名/パスワード認証です。IPv4 と IPv6 の両方がサポートされています。ドメイン名は、QNetworkProxy::HostNameLookupCapability が有効になっていれば SOCKS5 サーバーを通して解決されますが、そうでなければローカルで解決され、IP アドレスがサーバーに送信されます。QUdpSocket およびQTcpServer で SOCKS5 を使用する場合、覚えておくべきことがいくつかある:
QUdpSocket の場合、bind() への呼び出しがタイムアウト・エラーで失敗することがある。bind() に 0 以外のポート番号が渡された場合、指定されたポートが使用される とは限らない。実際に使用されているアドレスとポート番号を取得するには、localPort() とlocalAddress() を使用する。プロキシされたUDPは2つのUDP接続を経由するため、パケットがドロップされる可能 性が高くなる。
QTcpServer 、listen()への呼び出しがタイムアウト・エラーで失敗することがある。0以外のポート番号がlisten() に渡された場合、指定されたポートが使用される とは限らない。コネクションのリッスンに使用される実際のアドレスとポートを取得するには、serverPort() とserverAddress() を使用する。SOCKS5では、listen ()を呼び出すごとに1つの接続しか受け付けら れないため、呼び出すたびに異なるserverPort ()が使用される可能性が高い。
QAbstractSocket およびQTcpServerも参照のこと 。
メンバ型ドキュメント
enum QNetworkProxy::Capability
flags QNetworkProxy::Capabilities
これらのフラグは、指定したプロキシサーバがサポートする機能を示します。
QNetworkProxy オブジェクトが作成されると、デフォルトでさまざまな機能が設定されます (デフォルトの一覧は を参照)。しかし、 () でオブジェクトが作成された後に能力を変更することも可能です。QNetworkProxy::ProxyType setCapabilities
QNetworkProxy がサポートしている機能は以下のとおりです:
定数 | 値 | 説明 |
---|---|---|
QNetworkProxy::TunnelingCapability | 0x0001 | リモート・ホストへの透過的なトンネル型 TCP 接続を開く機能。プロキシサーバは、一方から他方への送信をそのまま中継し、キャッシュは行いません。 |
QNetworkProxy::ListeningCapability | 0x0002 | リスニングソケットを作成し、リモートホストからの TCP 接続の着信を待つ機能。 |
QNetworkProxy::UdpTunnelingCapability | 0x0004 | プロキシサーバーを経由してUDPデータグラムをリモートホストとの間で中継する機能。 |
QNetworkProxy::CachingCapability | 0x0008 | 転送内容をキャッシュする能力。この機能は各プロトコルとプロキシのタイプに固有である。例えば、HTTPプロキシは「GET」コマンドで転送されたウェブデータの コンテンツをキャッシュできる。 |
QNetworkProxy::HostNameLookupCapability | 0x0010 | アプリケーションに名前ルックアップを実行させ、IPアドレスのみへの接続を要求するのとは対照的に、リモートホスト名のルックアップを実行し、それに接続する能力。 |
QNetworkProxy::SctpTunnelingCapability | 0x00020 | リモートホストへの透過的なトンネル型SCTP接続をオープンする機能。 |
QNetworkProxy::SctpListeningCapability | 0x00040 | リスニングソケットを作成し、リモートホストからの着信SCTP接続を待機する機能。 |
Capabilities 型はQFlags<Capability> の型定義である。これは、Capabilities 値の OR の組み合わせを格納する。
enum QNetworkProxy::ProxyType
この列挙型は Qt で提供されるネットワーク・プロキシのタイプを記述します。
Qt が理解できるプロキシには、透過プロキシとキャッシュプロキシの 2 種類があります。前者は任意のデータ転送を扱うことができるプロキシで、後者は特定のリクエストのみを扱うことができます。キャッシュプロキシは、特定のクラスでのみ使用できます。
定数 | 値 | 説明 |
---|---|---|
QNetworkProxy::NoProxy | 2 | プロキシを使用しない |
QNetworkProxy::DefaultProxy | 0 | プロキシは、setApplicationProxy() を使用して設定されたアプリケーション・プロキシに基づいて決定されます。 |
QNetworkProxy::Socks5Proxy | 1 | Socks5 プロキシを使用する |
QNetworkProxy::HttpProxy | 3 | HTTP 透過プロキシを使用する |
QNetworkProxy::HttpCachingProxy | 4 | HTTP リクエストのみのプロキシ |
QNetworkProxy::FtpCachingProxy | 5 | FTP リクエストのみのプロキシ |
以下の表に、さまざまなプロキシのタイプとその機能を示します。プロキシの種類はそれぞれ異なる機能を持っているので、 プロキシの種類を選ぶ前にそれらを理解することが重要です。
プロキシの種類 | 説明 | デフォルトの機能 |
---|---|---|
SOCKS 5 | あらゆる接続に対応する汎用プロキシ。TCP、UDP、ポートへのバインド(着信接続)、認証をサポート。 | TunnelingCapability ListeningCapability, 、UdpTunnelingCapability HostNameLookupCapability |
HTTP | CONNECT "コマンドを使用して実装され、発信TCP接続のみをサポート。 | TunnelingCapability CachingCapability 、HostNameLookupCapability |
キャッシュ専用HTTP | 通常のHTTPコマンドを使用して実装され、HTTPリクエストのコンテキストでのみ有効です(QNetworkAccessManager を参照)。 | CachingCapability,HostNameLookupCapability |
キャッシュFTP | FTPプロキシを使用して実装され、FTPリクエストのコンテキストでのみ有効です (QNetworkAccessManager を参照)。 | CachingCapability,HostNameLookupCapability |
また、アプリケーションのデフォルトプロキシ (setApplicationProxy()) を、TunnelingCapability の機能を持たないプロキシに設定してはいけないことにも注意してください。そうすると、QTcpSocket 、コネクションを開く方法がわからなくなります。
setType()、type()、capabilities()、setCapabilities()も参照 。
メンバ関数のドキュメント
QNetworkProxy::QNetworkProxy()
QNetworkProxy をDefaultProxy タイプで構築する。
プロキシ・タイプはapplicationProxy() によって決定されます。デフォルトはNoProxy で、システム全体のプロキシが設定されている場合はそのプロキシになります。
setType() およびsetApplicationProxy()も参照してください 。
QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
type,hostName,port,user,password を持つ QNetworkProxy を構築します。
プロキシ・タイプtype のデフォルト機能は自動的に設定されます。
capabilities()も参照してください 。
QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)
other のコピーを作成する。
[noexcept]
QNetworkProxy::~QNetworkProxy()
QNetworkProxy オブジェクトを破棄する。
[static]
QNetworkProxy QNetworkProxy::applicationProxy()
アプリケーション・レベルのネットワーク・プロキシを返す。
QAbstractSocket またはQTcpSocket がQNetworkProxy::DefaultProxy 型を持つ場合、この関数が返すQNetworkProxy が使用される。
QNetworkProxyFactory 、setApplicationProxy ()、QAbstractSocket::proxy ()、QTcpServer::proxy ()も参照 。
QNetworkProxy::Capabilities QNetworkProxy::capabilities() const
このプロキシサーバーの機能を返します。
setCapabilities() およびtype()も参照 。
bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const
このプロキシに対してrawヘッダーheaderName が使用されている場合、true
を返す。プロキシの型がHttpProxy またはHttpCachingProxy でない場合はfalse
を返す。
rawHeader() およびsetRawHeader()も参照のこと 。
QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const
既知のネットワークヘッダheader がこのプロキシで使用されている場合、その値を返す。存在しない場合は QVariant()(つまり無効な variant)を返す。
QNetworkRequest::KnownHeaders 、rawHeader()、setHeader()も参照 。
[since 6.8]
QHttpHeaders QNetworkProxy::headers() const
このネットワークリクエストで設定されているヘッダーを返す。
プロキシがHttpProxy またはHttpCachingProxy 型でない場合、デフォルトのQHttpHeaders が返されます。
この関数は Qt 6.8 で導入されました。
setHeaders()も参照してください 。
QString QNetworkProxy::hostName() const
プロキシホストのホスト名を返します。
setHostName()、setPort() およびport()も参照 。
bool QNetworkProxy::isCachingProxy() const
このプロキシがQNetworkProxy::CachingCapability ケーパビリティをサポートしている場合はtrue
を返します。
Qt 4.4では、このケイパビリティはプロキシ型と関連付けられていましたが、Qt 4.5以降、setCapabilities()を呼び出すことで、プロキシからキャッシュのケイパビリティを削除することができます。
capabilities(),type(),isTransparentProxy()も参照してください 。
bool QNetworkProxy::isTransparentProxy() const
このプロキシがTCPコネクションの透過トンネリングをサポートしている場合、true
を返す。これはQNetworkProxy::TunnelingCapability の能力と一致します。
Qt 4.4では、ケイパビリティはプロキシの種類に紐付いていましたが、Qt 4.5以降では、setCapabilities()を呼び出すことで、プロキシからキャッシュのケイパビリティを削除することが可能です。
capabilities(),type(),isCachingProxy()も参照してください 。
QString QNetworkProxy::password() const
認証に使用したパスワードを返します。
user()、setPassword() およびsetUser()も参照 。
quint16 QNetworkProxy::port() const
プロキシ・ホストのポートを返す。
setHostName()、setPort() およびhostName()も参照 。
QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const
ヘッダーheaderName の生の形式を返す。そのようなヘッダーが存在しないか、プロキシがHttpProxy またはHttpCachingProxy のタイプでない場合、空のQByteArray が返される。これは、ヘッダーは存在するが内容がないものと区別できないかもしれない(ヘッ ダーが存在するかどうかを調べるにはhasRawHeader()を使用する)。
未加工のヘッダーは、setRawHeader()またはsetHeader()で設定できる。
header() およびsetRawHeader()も 参照のこと。
QList<QByteArray> QNetworkProxy::rawHeaderList() const
このネットワークプロキシに設定されているすべての raw ヘッダのリストを返す。リストはヘッダが設定された順番である。
プロキシの型がHttpProxy またはHttpCachingProxy でない場合、空のQList が返される。
hasRawHeader() およびrawHeader()も参照 。
[static]
void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)
アプリケーション・レベルのネットワーク・プロキシをnetworkProxy に設定する。
QAbstractSocket またはQTcpSocket がQNetworkProxy::DefaultProxy 型を持つ場合、この関数で設定されたQNetworkProxy が使用されます。使用するプロキシをより柔軟に決定したい場合は、QNetworkProxyFactory クラスを使用します。
この関数でデフォルトのプロキシ値を設定すると、QNetworkProxyFactory::setApplicationProxyFactory で設定されたアプリケーション・プロキシ・ファクトリが上書きされ、システム・プロキシの使用が無効になります。
QNetworkProxyFactory 、applicationProxy ()、QAbstractSocket::setProxy ()、QTcpServer::setProxy ()も参照してください 。
void QNetworkProxy::setCapabilities(QNetworkProxy::Capabilities capabilities)
このプロキシの能力をcapabilities に設定する。
setType() およびcapabilities()も参照 。
void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
既知のヘッダheader の値をvalue に設定し、以前に設定されていたヘッダを上書きします。この操作は同等の生のHTTPヘッダも設定する。
プロキシがHttpProxy またはHttpCachingProxy のタイプでない場合、これは何の効果も持たない。
QNetworkRequest::KnownHeaders 、setRawHeader()、header()も参照 。
[since 6.8]
void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)
このネットワークリクエストのヘッダーにnewHeaders を設定します。
いくつかのヘッダが既知のヘッダに対応する場合、値はパースされ、 対応するパースされた形式も設定される。
プロキシがHttpProxy またはHttpCachingProxy 型でない場合、この関数は何の効果も持ちません。
この関数は Qt 6.8 で導入されました。
headers() およびQNetworkRequest::KnownHeadersも参照してください 。
[since 6.8]
void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)
これはオーバーロードされた関数です。
この関数は Qt 6.8 で導入されました。
void QNetworkProxy::setHostName(const QString &hostName)
プロキシホストのホスト名をhostName に設定する。
hostName()、setPort() およびport()も参照 。
void QNetworkProxy::setPassword(const QString &password)
プロキシ認証のパスワードをpassword に設定する。
user()、setUser()、password()も参照 。
void QNetworkProxy::setPort(quint16 port)
プロキシホストのポートをport に設定する。
hostName()、setHostName()、port()も参照 。
void QNetworkProxy::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
ヘッダーheaderName に値headerValue を設定する。headerName が既知のヘッダー(QNetworkRequest::KnownHeaders 参照)に対応する場合、生の書式が解析され、対応する「cooked」 ヘッダーも設定される。
例えば
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));
はまた、既知のヘッダーLastModifiedHeaderを、解析された日付のQDateTime オブジェクトに設定する。
注意: 同じヘッダーを2回設定すると、前の設定が上書きされます。同じ名前の複数のHTTPヘッダの動作を実現するには、2つの値をカンマ(",")で区切って連結し、1つの生のヘッダを設定する必要があります。
プロキシがHttpProxy またはHttpCachingProxy のタイプでない場合、これは何の効果もない。
QNetworkRequest::KnownHeaders 、setHeader()、hasRawHeader()、rawHeader()も参照のこと 。
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
このインスタンスのプロキシタイプをtype に設定する。
setCapabilitiesプロキシのタイプを変更しても、このQNetworkProxy オブジェクトが保持するケイパビリティのセットは変更されないことに注意。
type() およびsetCapabilities()も参照 。
void QNetworkProxy::setUser(const QString &user)
プロキシ認証のユーザ名をuser に設定する。
user()、setPassword()、password()も参照 。
[noexcept]
void QNetworkProxy::swap(QNetworkProxy &other)
このネットワーク・プロキシのインスタンスをother と交換する。この操作は非常に速く、失敗することはない。
QNetworkProxy::ProxyType QNetworkProxy::type() const
このインスタンスのプロキシ・タイプを返します。
setType()も参照ください 。
QString QNetworkProxy::user() const
認証に使用したユーザ名を返します。
setUser()、setPassword() およびpassword()も参照 。
bool QNetworkProxy::operator!=(const QNetworkProxy &other) const
このネットワーク・プロキシの値とother を比較し、異なる場合はtrue
を返す。
QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
このネットワーク・プロキシにネットワーク・プロキシother の値を割り当てる。
bool QNetworkProxy::operator==(const QNetworkProxy &other) const
このネットワーク・プロキシの値をother と比較し、等しければtrue
を返す (プロキシの種類、サーバ、ユーザ名、パスワードが同じ)。
© 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.