QNetworkProxy Class
QNetworkProxy クラスは、ネットワーク・レイヤーのプロキシを提供します。詳細...
Header: | #include <QNetworkProxy> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 継承メンバを含む全メンバ一覧
- QNetworkProxy は、ネットワーク・プログラミング APIおよび暗黙的に共有されるクラスの一部です。
メモ:このクラスの関数はすべてリエントラントです。
パブリック型
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」コマンドで転送されたWebデータの コンテンツをキャッシュできる。 |
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()
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 またはQTcpSocket がQNetworkProxy::DefaultProxy 型を持つ場合、この関数が返すQNetworkProxy が使用されます。
QNetworkProxyFactory 、setApplicationProxy()、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()も参照 。
QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const
このプロキシに対して既知のネットワークヘッダheader が使用されている場合、その値を返す。存在しない場合は、QVariant() (つまり、無効なバリアント) を返します。
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
このネットワーク・プロキシに設定されているすべての生ヘッダのリストを返す。リストはヘッダが設定された順番である。
プロキシの型が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
を返します(プロキシの種類、サーバ、ユーザ名とパスワードが同じ)。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。