QNetworkProxy Class

QNetworkProxy クラスは、ネットワーク・レイヤーのプロキシを提供します。詳細...

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

メモ:このクラスの関数はすべてリエントラントです。

パブリック・タイプ

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 1928RFC 1929 に基づいています。サポートされている認証方法は、認証なしとユーザー名/パスワード認証です。IPv4 と IPv6 の両方がサポートされています。ドメイン名は、QNetworkProxy::HostNameLookupCapability が有効になっていれば SOCKS5 サーバーを通して解決されますが、そうでなければローカルで解決され、IP アドレスがサーバーに送信されます。QUdpSocket およびQTcpServer で SOCKS5 を使用する場合、覚えておくべきことがいくつかある:

QUdpSocket の場合、bind() への呼び出しがタイムアウト・エラーで失敗することがある。bind() に 0 以外のポート番号が渡された場合、指定されたポートが使用される とは限らない。実際に使用されているアドレスとポート番号を取得するには、localPort() とlocalAddress() を使用する。プロキシされたUDPは2つのUDP接続を経由するため、パケットがドロップされる可能 性が高くなる。

QTcpServerlisten()への呼び出しがタイムアウト・エラーで失敗することがある。0以外のポート番号がlisten() に渡された場合、指定されたポートが使用される とは限らない。コネクションのリッスンに使用される実際のアドレスとポートを取得するには、serverPort() とserverAddress() を使用する。SOCKS5では、listen ()を呼び出すごとに1つの接続しか受け付けら れないため、呼び出すたびに異なるserverPort ()が使用される可能性が高い。

QAbstractSocket およびQTcpServerも参照のこと

メンバ型ドキュメント

enum QNetworkProxy::Capability
flags QNetworkProxy::Capabilities

これらのフラグは、指定したプロキシサーバがサポートする機能を示します。

QNetworkProxy オブジェクトが作成されると、デフォルトでさまざまな機能が設定されます (デフォルトの一覧は を参照)。しかし、 () でオブジェクトが作成された後に能力を変更することも可能です。QNetworkProxy::ProxyType setCapabilities

QNetworkProxy がサポートしている機能は以下のとおりです:

定数説明
QNetworkProxy::TunnelingCapability0x0001リモート・ホストへの透過的なトンネル型 TCP 接続を開く機能。プロキシサーバは、一方から他方への送信をそのまま中継し、キャッシュは行いません。
QNetworkProxy::ListeningCapability0x0002リスニングソケットを作成し、リモートホストからの TCP 接続の着信を待つ機能。
QNetworkProxy::UdpTunnelingCapability0x0004プロキシサーバーを経由してUDPデータグラムをリモートホストとの間で中継する機能。
QNetworkProxy::CachingCapability0x0008転送内容をキャッシュする能力。この機能は各プロトコルとプロキシのタイプに固有である。例えば、HTTPプロキシは「GET」コマンドで転送されたウェブデータの コンテンツをキャッシュできる。
QNetworkProxy::HostNameLookupCapability0x0010アプリケーションに名前ルックアップを実行させ、IPアドレスのみへの接続を要求するのとは対照的に、リモートホスト名のルックアップを実行し、それに接続する能力。
QNetworkProxy::SctpTunnelingCapability0x00020リモートホストへの透過的なトンネル型SCTP接続をオープンする機能。
QNetworkProxy::SctpListeningCapability0x00040リスニングソケットを作成し、リモートホストからの着信SCTP接続を待機する機能。

Capabilities 型はQFlags<Capability> の型定義である。これは、Capabilities 値の OR の組み合わせを格納する。

enum QNetworkProxy::ProxyType

この列挙型は Qt で提供されるネットワーク・プロキシのタイプを記述します。

Qt が理解できるプロキシには、透過プロキシとキャッシュプロキシの 2 種類があります。前者は任意のデータ転送を扱うことができるプロキシで、後者は特定のリクエストのみを扱うことができます。キャッシュプロキシは、特定のクラスでのみ使用できます。

定数説明
QNetworkProxy::NoProxy2プロキシを使用しない
QNetworkProxy::DefaultProxy0プロキシは、setApplicationProxy() を使用して設定されたアプリケーション・プロキシに基づいて決定されます。
QNetworkProxy::Socks5Proxy1Socks5 プロキシを使用する
QNetworkProxy::HttpProxy3HTTP 透過プロキシを使用する
QNetworkProxy::HttpCachingProxy4HTTP リクエストのみのプロキシ
QNetworkProxy::FtpCachingProxy5FTP リクエストのみのプロキシ

以下の表に、さまざまなプロキシのタイプとその機能を示します。プロキシの種類はそれぞれ異なる機能を持っているので、 プロキシの種類を選ぶ前にそれらを理解することが重要です。

プロキシの種類説明デフォルトの機能
SOCKS 5あらゆる接続に対応する汎用プロキシ。TCP、UDP、ポートへのバインド(着信接続)、認証をサポート。TunnelingCapability ListeningCapability, 、UdpTunnelingCapability HostNameLookupCapability
HTTPCONNECT "コマンドを使用して実装され、発信TCP接続のみをサポート。TunnelingCapability CachingCapabilityHostNameLookupCapability
キャッシュ専用HTTP通常のHTTPコマンドを使用して実装され、HTTPリクエストのコンテキストでのみ有効です(QNetworkAccessManager を参照)。CachingCapability,HostNameLookupCapability
キャッシュFTPFTPプロキシを使用して実装され、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 またはQTcpSocketQNetworkProxy::DefaultProxy 型を持つ場合、この関数が返すQNetworkProxy が使用される。

QNetworkProxyFactorysetApplicationProxy ()、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()も参照のこと

既知のネットワークヘッダheader がこのプロキシで使用されている場合、その値を返す。存在しない場合は QVariant()(つまり無効な variant)を返す。

QNetworkRequest::KnownHeadersrawHeader()、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 またはQTcpSocketQNetworkProxy::DefaultProxy 型を持つ場合、この関数で設定されたQNetworkProxy が使用されます。使用するプロキシをより柔軟に決定したい場合は、QNetworkProxyFactory クラスを使用します。

この関数でデフォルトのプロキシ値を設定すると、QNetworkProxyFactory::setApplicationProxyFactory で設定されたアプリケーション・プロキシ・ファクトリが上書きされ、システム・プロキシの使用が無効になります。

QNetworkProxyFactoryapplicationProxy ()、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::KnownHeaderssetRawHeader()、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::KnownHeaderssetHeader()、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.