QNetworkProxy Class

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

Header: #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」コマンドで転送されたWebデータの コンテンツをキャッシュできる。
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()

DefaultProxy 型の QNetworkProxy を構築します。

プロキシ・タイプは、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

このプロキシで生ヘッダheaderName が使用されている場合、true を返す。プロキシのタイプがHttpProxy またはHttpCachingProxy でない場合はfalse を返す。

rawHeader()およびsetRawHeader()も参照

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

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

このネットワーク・プロキシに設定されているすべての生ヘッダのリストを返す。リストはヘッダが設定された順番である。

プロキシの型が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 を返します(プロキシの種類、サーバ、ユーザ名とパスワードが同じ)。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。