QNetworkAccessManager Class
QNetworkAccessManagerクラスは、アプリケーションによるネットワーク・リクエストの送信とリプライの受信を可能にします。詳細...
Header: | #include <QNetworkAccessManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Inherits: | QObject |
- 継承されたメンバを含む、すべてのメンバのリスト
- 非推奨メンバー
- QNetworkAccessManagerは、ネットワーク・プログラミングAPIの一部です。
メモ:このクラスのすべての関数はリエントラントです。
パブリック型
enum | Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation } |
パブリック関数
QNetworkAccessManager(QObject *parent = nullptr) | |
virtual | ~QNetworkAccessManager() |
void | addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts) |
bool | autoDeleteReplies() const |
QAbstractNetworkCache * | cache() const |
void | clearAccessCache() |
void | clearConnectionCache() |
void | connectToHost(const QString &hostName, quint16 port = 80) |
void | connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()) |
void | connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName) |
QNetworkCookieJar * | cookieJar() const |
QNetworkReply * | deleteResource(const QNetworkRequest &request) |
void | enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString()) |
QNetworkReply * | get(const QNetworkRequest &request) |
(since 6.7) QNetworkReply * | get(const QNetworkRequest &request, QIODevice *data) |
(since 6.7) QNetworkReply * | get(const QNetworkRequest &request, const QByteArray &data) |
QNetworkReply * | head(const QNetworkRequest &request) |
bool | isStrictTransportSecurityEnabled() const |
bool | isStrictTransportSecurityStoreEnabled() const |
QNetworkReply * | post(const QNetworkRequest &request, QIODevice *data) |
QNetworkReply * | post(const QNetworkRequest &request, QHttpMultiPart *multiPart) |
QNetworkReply * | post(const QNetworkRequest &request, const QByteArray &data) |
(since 6.8) QNetworkReply * | post(const QNetworkRequest &request, std::nullptr_t nptr) |
QNetworkProxy | proxy() const |
QNetworkProxyFactory * | proxyFactory() const |
QNetworkReply * | put(const QNetworkRequest &request, QIODevice *data) |
QNetworkReply * | put(const QNetworkRequest &request, QHttpMultiPart *multiPart) |
QNetworkReply * | put(const QNetworkRequest &request, const QByteArray &data) |
(since 6.8) QNetworkReply * | put(const QNetworkRequest &request, std::nullptr_t nptr) |
QNetworkRequest::RedirectPolicy | redirectPolicy() const |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr) |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart) |
QNetworkReply * | sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data) |
void | setAutoDeleteReplies(bool shouldAutoDelete) |
void | setCache(QAbstractNetworkCache *cache) |
void | setCookieJar(QNetworkCookieJar *cookieJar) |
void | setProxy(const QNetworkProxy &proxy) |
void | setProxyFactory(QNetworkProxyFactory *factory) |
void | setRedirectPolicy(QNetworkRequest::RedirectPolicy policy) |
void | setStrictTransportSecurityEnabled(bool enabled) |
void | setTransferTimeout(int timeout) |
(since 6.7) void | setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout) |
QList<QHstsPolicy> | strictTransportSecurityHosts() const |
virtual QStringList | supportedSchemes() const |
int | transferTimeout() const |
(since 6.7) std::chrono::milliseconds | transferTimeoutAsDuration() const |
シグナル
void | authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator) |
void | encrypted(QNetworkReply *reply) |
void | finished(QNetworkReply *reply) |
void | preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator) |
void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
void | sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) |
プロテクト関数
virtual QNetworkReply * | createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr) |
詳細説明
ネットワークアクセスAPIは、1つのQNetworkAccessManagerオブジェクトを中心に構成され、送信するリクエストの共通コンフィグレーションと設定を保持します。QNetworkAccessManager オブジェクトには、プロキシとキャッシュの設定、そのような問題に関連するシグナル、およびネットワーク操作の進行状況を監視するために使用できるリプライ・シグナルが含まれています。QNetworkAccessManager のインスタンスは、Qt アプリケーション全体で 1 つあれば十分です。QNetworkAccessManager はQObject に基づいているため、QNetworkAccessManager が属するスレッドからのみ使用できます。
QNetworkAccessManager オブジェクトが作成されると、アプリケーショ ンはそれを使ってネットワーク経由でリクエストを送信できます。リクエストとオプションのデータを受け取り、QNetworkReply オブジェクトを返す標準関数が提供されています。返されたオブジェクトは、対応するリクエストに応答して返されたデータを取得するために使用される。
ネットワークからの単純なダウンロードは、次のようにして行うことができる:
QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, &QNetworkAccessManager::finished, this, &MyClass::replyFinished); manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
QNetworkAccessManagerには非同期APIがあります。上記のreplyFinished
スロットが呼び出されると、パラメータとして、ダウンロードされたデータとメタデータ(ヘッダーなど)を含むQNetworkReply オブジェクトが渡されます。
注意: リクエストが終了した後、QNetworkReply オブジェクトを適切なタイミングで削除するのはユーザーの責任です。finished()に接続されたスロット内で直接削除しないでください。deleteLater ()関数を使用できます。
注意: QNetworkAccessManager は、受信したリクエストをキューに入れます。並行して実行されるリクエストの数は、プロトコルに依存します。現在、デスクトップ・プラットフォーム上のHTTPプロトコルでは、1つのホスト/ポートの組み合わせに対して6つのリクエストが並列実行されます。
マネージャーがすでに存在すると仮定して、より複雑な例を挙げることができる:
QNetworkRequest request; request.setUrl(QUrl("http://qt-project.org")); request.setRawHeader("User-Agent", "MyOwnBrowser 1.0"); QNetworkReply *reply = manager->get(request); connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead); connect(reply, &QNetworkReply::errorOccurred, this, &MyClass::slotError); connect(reply, &QNetworkReply::sslErrors, this, &MyClass::slotSslErrors);
QNetworkRequest 、QNetworkReply 、QNetworkProxyも参照のこと 。
メンバータイプ ドキュメント
enum QNetworkAccessManager::Operation
この応答が処理している操作を示す。
定数 | 値 | 説明 |
---|---|---|
QNetworkAccessManager::HeadOperation | 1 | ヘッダを取得する操作 (head() で作成) |
QNetworkAccessManager::GetOperation | 2 | ヘッダを取得してコンテンツをダウンロードする操作 (get() で作成) |
QNetworkAccessManager::PutOperation | 3 | コンテンツのアップロード操作 (put() で作成) |
QNetworkAccessManager::PostOperation | 4 | HTML フォームの内容を HTTP POST で送信します (post() で作成)。 |
QNetworkAccessManager::DeleteOperation | 5 | コンテンツの削除操作 (deleteResource() で作成) |
QNetworkAccessManager::CustomOperation | 6 | カスタム操作 (sendCustomRequest() で作成) |
QNetworkReply::operation()も参照 。
メンバ関数の説明
[explicit]
QNetworkAccessManager::QNetworkAccessManager(QObject *parent = nullptr)
ネットワーク・アクセス API の中心となる QNetworkAccessManager オブジェクトを構築し、parent を親オブジェクトとして設定します。
[virtual noexcept]
QNetworkAccessManager::~QNetworkAccessManager()
QNetworkAccessManager オブジェクトを破棄し、リソースを解放します。このクラスから返されるQNetworkReply オブジェクトには、このオブジェクトが親として設定されていることに注意してください。つまり、このオブジェクトに対してQObject::setParent() を呼び出さないと、このオブジェクトと一緒に削除されます。
void QNetworkAccessManager::addStrictTransportSecurityHosts(const QList<QHstsPolicy> &knownHosts)
HTTP Strict Transport Security ポリシーを HSTS キャッシュに追加します。knownHosts には、QHstsPolicy の情報を持つ既知のホストが含まれます。
注意 : 期限切れのポリシーが存在する場合、既知のホストはキャッシュから削除されます。
注 : HTTP応答を処理する間、QNetworkAccessManager 、HSTSキャッシュを更新し、終了するポリシーを削除または更新したり、新しいknownHosts を導入したりすることもできる。したがって、現在の実装はサーバー駆動型であり、クライアントコードは、QNetworkAccessManager 、以前に既知または発見されたポリシーを提供することができるが、この情報は「Strict-Transport-Security」応答ヘッダーによって上書きすることができる。
addStrictTransportSecurityHosts()、enableStrictTransportSecurityStore()、QHstsPolicyも参照のこと 。
[signal]
void QNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
このシグナルは、最終サーバーがリクエストされたコンテンツを配送する前に 認証を要求するたびに発行される。このシグナルに接続されたスロットは、authenticator オブジェクトにコンテンツの認証情報(reply オブジェクトを検査することで決定できる)を入力する必要があります。
QNetworkAccessManager は認証情報を内部的にキャッシュし、サーバーが再度認証を要求した場合に authenticationRequired() シグナルを出さずに同じ値を送信します。認証情報が拒否された場合は、このシグナルが再度送出されます。
注意: リクエストが認証情報を送信しないようにするには、authenticator オブジェクトで setUser() や setPassword() をコールしてはいけません。これにより、finished() シグナルが、QNetworkReply エラーAuthenticationRequiredError とともに発行される。
注意: QueuedConnectionを使用してこのシグナルに接続することはできません。 シグナルが返ったときに認証子に新しい情報が入力されていないと、接続に失敗するからです。
proxyAuthenticationRequired()、QAuthenticator::setUser()、QAuthenticator::setPassword()も参照 。
bool QNetworkAccessManager::autoDeleteReplies() const
QNetworkReplies を自動的に削除するようにQNetworkAccessManager が構成されている場合は true を、そうでない場合は false を返します。
setAutoDeleteReplies およびQNetworkRequest::AutoDeleteReplyOnFinishAttribute も参照して ください。
QAbstractNetworkCache *QNetworkAccessManager::cache() const
ネットワークから取得したデータを格納するために使用されるキャッシュを返します。
setCache()も参照して ください。
void QNetworkAccessManager::clearAccessCache()
認証データとネットワーク接続の内部キャッシュをフラッシュします。
この関数は、自動テストを行う際に便利です。
clearConnectionCache() も参照 。
void QNetworkAccessManager::clearConnectionCache()
ネットワーク接続の内部キャッシュをフラッシュします。clearAccessCache() とは対照的に、認証データは保持される。
clearAccessCache()も参照のこと 。
void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port = 80)
ポートport で、hostName で指定されたホストへの接続を開始する。この関数は、HTTPリクエストが行われる前にホストとのTCPハンドシェイクを完了させ、ネットワークの待ち時間を短くするのに便利です。
注意: この関数にはエラーを報告する機能はありません。
connectToHostEncrypted()、get()、post()、put()、deleteResource()も参照のこと 。
void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration())
sslConfiguration を使用して、ポートport でhostName が指定したホストへの接続を開始する。この関数は、HTTPS要求が行われる前にホストとのTCPおよびSSLハンドシェイクを完了させ、ネットワークの待ち時間を短縮するのに便利です。
注意: HTTP/2接続の事前接続は、QSslConfiguration::ALPNProtocolHTTP2 が許可されたプロトコルのリストに含まれた状態で、sslConfiguration で setAllowedNextProtocols() を呼び出すことで行うことができます。HTTP/2を使用する場合、ホストごとに1つの接続で十分です。つまり、ホストごとにこのメソッドを複数回呼び出しても、ネットワークトランザクションは速くなりません。
注意: この関数にはエラーを報告する機能はありません。
connectToHost(),get(),post(),put(),deleteResource()も参照 。
void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName)
これはオーバーロードされた関数である。
sslConfiguration を使用し、peerName を証明書の検証に使用する hostName に設定して、port のポートでhostName で指定されたホストへの接続を開始する。この関数は、HTTPSリクエストが行われる前にホストとのTCPとSSLのハンドシェイクを完了させ、ネットワークの待ち時間を短くするのに便利です。
注意: HTTP/2 接続の事前接続は、許可されるプロトコルのリストにQSslConfiguration::ALPNProtocolHTTP2 が含まれているsslConfiguration で setAllowedNextProtocols() を呼び出すことで行うことができます。HTTP/2を使用する場合、ホストごとに1つの接続で十分です。つまり、ホストごとにこのメソッドを複数回呼び出しても、ネットワークトランザクションは速くなりません。
注意: この関数にはエラーを報告する機能はありません。
connectToHost()、get()、post()、put()、deleteResource()も参照のこと 。
QNetworkCookieJar *QNetworkAccessManager::cookieJar() const
ネットワークから取得したクッキーと送信しようとしているクッキーを格納するために使用されるQNetworkCookieJar を返します。
setCookieJar()も参照してください 。
[virtual protected]
QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData = nullptr)
操作op とリクエストoriginalReq を処理する新しいQNetworkReply オブジェクトを返します。デバイスoutgoingData は、Get リクエストと Head リクエストでは常に 0 ですが、これらの操作ではpost() とput() に渡される値です(QByteArray バリアントはQBuffer オブジェクトを渡します)。
デフォルトの実装では、setCookieJar()で設定されたクッキー・ジャーでQNetworkCookieJar::cookiesForUrl()を呼び出し、リモート・サーバーに送られるクッキーを取得します。
返されたオブジェクトはオープン状態でなければならない。
QNetworkReply *QNetworkAccessManager::deleteResource(const QNetworkRequest &request)
request の URL で識別されるリソースを削除する要求を送信します。
注意: この機能は現在 HTTP でのみ使用可能で、HTTP DELETE 要求を実行します。
get()、post()、put()、sendCustomRequest()も参照のこと 。
void QNetworkAccessManager::enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString())
enabled がtrue
の場合、内部HSTSキャッシュは、HSTSポリシーの読み取りと書き込みに永続ストアを使用します。storeDir は、このストアが配置される場所を定義します。デフォルトの場所はQStandardPaths::CacheLocation で定義されています。書き込み可能なQStandartPaths::CacheLocationがなく、storeDir が空文字列の場合、ストアはプログラムの作業ディレクトリに配置されます。
注意: 永続ストアが有効化される時点で、HSTSキャッシュにすでにHSTSポリシーが含まれている場合、これらのポリシーはストアに保持されます。キャッシュとストアの両方に同じ既知のホストが含まれている場合、キャッシュのポリシーの方がより最新であるとみなされます(したがって、ストアの以前の値が上書きされます)。この動作が望ましくない場合は、Strict Transport Securityを有効にする前にHSTSストアを有効にしてください。デフォルトでは、HSTSポリシーの永続ストアは無効になっています。
isStrictTransportSecurityStoreEnabled()、setStrictTransportSecurityEnabled()、QStandardPaths::standardLocations()も参照のこと 。
[signal]
void QNetworkAccessManager::encrypted(QNetworkReply *reply)
このシグナルは、SSL/TLSセッションが最初のハンドシェイクに成功したときに発行される。この時点では、ユーザーデータは送信されていない。このシグナルは、例えばウェブサイトの証明書が変更されたときにユーザーに通知するなど、証明書チェーンの追加チェックを実行するために使用できます。reply パラメータは、どのネットワーク・リプライが責任を負うかを指定する。もしリプライが期待された条件に一致しない場合は、このシグナルに接続されたスロットからQNetworkReply::abort() を呼び出すことでリプライを中止する必要がある。使用中のSSLコンフィギュレーションは、QNetworkReply::sslConfiguration() メソッドを使って検査することができる。
内部的には、QNetworkAccessManager はリクエストを並行して処理するために、サーバーへの複数のコネクションをオープンすることがある。これらの接続は再利用される可能性があり、encrypted() シグナルは発行されません。つまり、このシグナルを受け取ることが保証されるのは、QNetworkAccessManager の寿命の中で、サイトへの最初の接続だけということになる。
QSslSocket::encrypted() およびQNetworkReply::encrypted()も参照のこと 。
[signal]
void QNetworkAccessManager::finished(QNetworkReply *reply)
このシグナルは、保留中のネットワーク応答が終了するたびに発行されます。reply パラメータには、終了したリプライへのポインタが格納される。このシグナルはQNetworkReply::finished() シグナルと同時に発行される。
オブジェクトのステータスについては、QNetworkReply::finished() を参照してください。
注意: このシグナルに接続されているスロットのreply オブジェクトを削除しないでください。deleteLater() を使用してください。
QNetworkReply::finished() およびQNetworkReply::error()も参照 。
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)
ターゲットrequest の内容を取得するリクエストをポストし、新しいデータが到着するたびにreadyRead() シグナルを発する、読み込み用にオープンされた新しいQNetworkReply オブジェクトを返す。
コンテンツと関連するヘッダがダウンロードされる。
post()、put()、deleteResource()、sendCustomRequest()も参照のこと 。
[since 6.7]
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, QIODevice *data)
これはオーバーロードされた関数である。
注意: メッセージ・ボディを持つGETリクエストはキャッシュされない。
注意: リクエストがリダイレクトされた場合、ステータスコードが 307 または 308 の場合のみ、メッセージボディが保持されます。
この関数は Qt 6.7 で導入されました。
[since 6.7]
QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request, const QByteArray &data)
これはオーバーロードされた関数です。
注意 : メッセージ・ボディを持つ GET リクエストはキャッシュされません。
注意 : リクエストがリダイレクトされた場合、ステータスコードが 307 または 308 の場合のみ、メッセージボディが保持されます。
この関数は Qt 6.7 で導入されました。
QNetworkReply *QNetworkAccessManager::head(const QNetworkRequest &request)
request のネットワーク・ヘッダを取得するリクエストを投稿し、そのようなヘッダを含む新しいQNetworkReply オブジェクトを返します。
この関数は、HTTPリクエストに関連付けられた名前(HEAD)にちなんで名付けられました。
bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const
HTTP Strict Transport Security (HSTS)が有効になっている場合、trueを返す。デフォルトではHSTSは無効になっている。
setStrictTransportSecurityEnabled()も参照 。
bool QNetworkAccessManager::isStrictTransportSecurityStoreEnabled() const
HSTSキャッシュがHSTSポリシーのロードと保存に永続ストアを使用する場合、trueを返します。
enableStrictTransportSecurityStore()も参照 。
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QIODevice *data)
request で指定された宛先に HTTP POST リクエストを送信し、サーバから送信された応答を含む、読み取り用にオープンされた新しいQNetworkReply オブジェクトを返します。data の内容がサーバにアップロードされる。
data は読み取り用にオープンされていなければならず、このリプライに対して () シグナルが発せられるまで有効でなければならない。finished
注意: HTTPおよびHTTPS以外のプロトコルでのPOSTリクエストの送信は未定義であり、おそらく失敗する。
get()、put()、deleteResource()、sendCustomRequest()も参照 。
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
これはオーバーロードされた関数である。
request で指定された宛先にmultiPart メッセージの内容を送信します。
これは、MIME マルチパート・メッセージを HTTP で送信する場合に使用できます。
QHttpMultiPart 、QHttpPart 、およびput()も参照してください 。
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, const QByteArray &data)
これはオーバーロードされた関数です。
request で指定された宛先にdata バイト配列の内容を送信します。
[since 6.8]
QNetworkReply *QNetworkAccessManager::post(const QNetworkRequest &request, std::nullptr_t nptr)
これはオーバーロードされた関数です。
request で指定された POST リクエストをボディなしで送信し、新しいQNetworkReply オブジェクトを返します。
この関数は Qt 6.8 で導入されました。
[signal]
void QNetworkAccessManager::preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator)
このシグナルは、SSL/TLSハンドシェイクでPSK暗号スイートがネゴシエートされ、PSK認証が必要になった場合に発行されます。reply オブジェクトは、そのような暗号スイートをネゴシエートしているQNetworkReply です。
PSK を使う場合、SSL ハンドシェイクを継続するために、クライアントはサーバーに有効な ID と有効な事前共有鍵を送らなければならない。アプリケーションはこのシグナルに接続されたスロットで、渡されたauthenticator オブジェクトを必要に応じて埋めることで、この情報を提供することができます。
注意: このシグナルを無視したり、必要な認証情報を提供しなかったりすると、ハンドシェイクが失敗し、接続が中断されます。
注意 :authenticator オブジェクトはリプライが所有するので、アプリケーションが削除してはならない。
QSslPreSharedKeyAuthenticatorも参照のこと 。
QNetworkProxy QNetworkAccessManager::proxy() const
このQNetworkAccessManager オブジェクトを使用して送られたリクエストが使用するQNetworkProxy を返す。プロキシのデフォルト値はQNetworkProxy::DefaultProxy です。
setProxy()、setProxyFactory()、proxyAuthenticationRequired()も参照の こと。
[signal]
void QNetworkAccessManager::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
このシグナルは、プロキシが認証を要求し、QNetworkAccessManager 、 キャッシュされた有効な信用証明書が見つからないときに発行される。このシグナルに接続されたスロットは、authenticator オブジェクトのproxy プロキシのクレデンシャルを埋める必要があります。
QNetworkAccessManager はその信用証明書を内部的にキャッシュする。次にプロキシが認証を要求するとき、 は、proxyAuthenticationRequiredシグナルを再び発することなく、自動的に同じ信用証明書を送る。QNetworkAccessManager
プロキシが信用証明書を拒否した場合、QNetworkAccessManager は再びシグナルを発する。
proxy()、setProxy()、authenticationRequired()も参照 。
QNetworkProxyFactory *QNetworkAccessManager::proxyFactory() const
リクエストに使用するプロキシを決定するために、このQNetworkAccessManager オブジェクトが使用しているプロキシファクトリを返します。
この関数が返すポインタはQNetworkAccessManager で管理され、いつでも削除できることに注意。
setProxyFactory() およびproxy()も参照のこと 。
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QIODevice *data)
data の内容を宛先request にアップロードし、返信用にオープンされる新しいQNetworkReply オブジェクトを返す。
data は、この関数が呼び出されたときに読み取り用にオープンされていなければならず、この返信に対して () シグナルが発せられるまで有効でなければならない。finished
返されたオブジェクトから何かが読めるようになるかどうかは、プロトコルに依存する。HTTPの場合、サーバーはアップロードが成功した(または失敗した)ことを示す小さなHTMLページを送るかもしれない。他のプロトコルでは、おそらく返信にコンテンツが含まれるでしょう。
注意: HTTPの場合、このリクエストはPUTリクエストを送信しますが、ほとんどのサーバーはこれを許可していません。HTMLフォームによるファイルアップロードを含むフォームアップロードの仕組みは、POSTメカニズムを使用する。
get(),post(),deleteResource(),sendCustomRequest()も参照のこと 。
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, QHttpMultiPart *multiPart)
これはオーバーロードされた関数である。
request で指定された宛先にmultiPart メッセージの内容を送信します。
これは、MIME マルチパート・メッセージを HTTP で送信する場合に使用できます。
QHttpMultiPart 、QHttpPart 、およびpost()も参照してください 。
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, const QByteArray &data)
これはオーバーロードされた関数です。
request で指定された宛先にdata バイト配列の内容を送信する。
[since 6.8]
QNetworkReply *QNetworkAccessManager::put(const QNetworkRequest &request, std::nullptr_t nptr)
これはオーバーロードされた関数である。
request で指定された PUT リクエストをボディなしで送信し、新しいQNetworkReply オブジェクトを返します。
この関数は Qt 6.8 で導入されました。
QNetworkRequest::RedirectPolicy QNetworkAccessManager::redirectPolicy() const
新しいリクエストを作成するときに使用されるリダイレクトポリシーを返します。
setRedirectPolicy() およびQNetworkRequest::RedirectPolicyも参照してください 。
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)
request の URL で特定されるサーバーにカスタムリクエストを送信します。
HTTP仕様に従って有効なverb をサーバに送るのはユーザの責任である。
このメソッドは、get()やpost()などで提供される一般的な動詞以外の動詞、例えばHTTP OPTIONSコマンドを送信する手段を提供します。
data が空でない場合、data デバイスの内容がサーバーにアップロードされます。この場合、データは読み取り用にオープンされていなければならず、この応答に対してfinished() シグナルが発せられるまで有効でなければなりません。
注: この機能は現在HTTP(S)でのみ利用可能である。
get()、post()、put()、deleteResource()も参照のこと 。
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart)
これはオーバーロードされた関数である。
request のURLで識別されるサーバにカスタム・リクエストを送信する。
request で指定された宛先にmultiPart メッセージのコンテンツを送信します。
これはカスタム動詞のMIMEマルチパートメッセージの送信に使用できます。
QHttpMultiPart 、QHttpPart 、およびput()も参照してください 。
QNetworkReply *QNetworkAccessManager::sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)
これはオーバーロードされた関数です。
request で指定された宛先にdata バイト配列の内容を送信します。
void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)
QNetworkReplies の自動削除を有効または無効にします。
shouldAutoDelete をtrueに設定することは、QNetworkRequest::AutoDeleteReplyOnFinishAttribute 属性がすでにQNetworkRequest で明示的に設定されていない限り、QNetworkAccessManager のこのインスタンスに渡される将来のすべてのQNetworkRequests で、 属性をtrueに設定することと同じである。
autoDeleteReplies およびQNetworkRequest::AutoDeleteReplyOnFinishAttributeも参照してください 。
void QNetworkAccessManager::setCache(QAbstractNetworkCache *cache)
マネージャのネットワークキャッシュを指定されたcache に設定します。このキャッシュは、マネージャがディスパッチするすべてのリクエストに使用されます。
クッキーを永続的なストレージに保存するなどの追加機能を実装したクラスにネットワーク・キャッシュ・オブジェクトを設定するには、この関数を使用します。
注意: QNetworkAccessManager はcache オブジェクトの所有権を取ります。
QNetworkAccessManager デフォルトでは、キャッシュは設定されていません。Qt はシンプルなディスク・キャッシュ を提供します。QNetworkDiskCache
cache() およびQNetworkRequest::CacheLoadControlも参照してください 。
void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)
マネージャのクッキー・ジャーを、指定されたcookieJar に設定します。クッキージャーは、マネージャによってディスパッチされるすべてのリクエストで使用されます。
クッキーを永続的なストレージに保存するような追加機能を実装するクラスにクッキー・ジャー・オブジェクトを設定するには、この関数を使用します。
注意: QNetworkAccessManager はcookieJar オブジェクトの所有権を取ります。
cookieJar がこのQNetworkAccessManager と同じスレッドにある場合、このオブジェクトが削除されたときにクッキー・ジャーも削除されるように、cookieJar の親を設定します。異なるQNetworkAccessManager オブジェクト間でクッキー・ジャーを共有したい場合は、この関数を呼び出した後、クッキー・ジャーの親を 0 に設定するとよいでしょう。
QNetworkAccessManager デフォルトでは、それ自身のクッキー・ポリシーは実装されていません: サーバから送られたすべてのクッキーを、それらが適切に形成され、最小限のセキュリ ティ要件(クッキーのドメインがリクエストのものと一致し、クッキーのパスがリクエストのものと一致する)を満たす限り、受け入れます。独自のセキュリティ・ポリシーを実装するには、 () と () 仮想関数をオーバーライドしてください。これらの関数は、 が新しいクッキーを検出したときに呼び出されます。QNetworkCookieJar::cookiesForUrl QNetworkCookieJar::setCookiesFromUrl QNetworkAccessManager
cookieJar()、QNetworkCookieJar::cookiesForUrl()、QNetworkCookieJar::setCookiesFromUrl()も参照してください 。
void QNetworkAccessManager::setProxy(const QNetworkProxy &proxy)
今後のリクエストで使用するプロキシをproxy に設定する。これは、すでに送信されたリクエストには影響しない。プロキシが認証を要求した場合、proxyAuthenticationRequired() シグナルが発行される。
この関数で設定されたプロキシは、QNetworkAccessManager が発行するすべてのリクエストに使用される。場合によっては、送信されるリクエストのタイプや宛先ホストに応じて、 異なるプロキシを選択する必要があるかもしれません。そのような場合は、setProxyFactory() の使用を検討すべきである。
proxy() およびproxyAuthenticationRequired()も参照 ください。
void QNetworkAccessManager::setProxyFactory(QNetworkProxyFactory *factory)
このクラスのプロキシ・ファクトリをfactory に設定します。プロキシファクトリは、すべてのリクエストに同じプロキシ値を使おうとするのではなく、 与えられたリクエストに使われるプロキシのリストをより具体的に決定するために使われます。
QNetworkAccessManager によって送られるすべてのクエリはタイプQNetworkProxyQuery::UrlRequest を持つ。
例えば、プロキシファクトリは以下のルールを適用できる:
- ターゲットアドレスがローカルネットワークにある場合(例えば、ホスト名にドットが 含まれていないか、組織の範囲内のIPアドレスの場合)、以下を返す。QNetworkProxy::NoProxy
- リクエストがFTPの場合は、FTPプロキシを返します。
- リクエストがHTTPまたはHTTPSの場合、HTTPプロキシを返す。
- そうでなければ、SOCKSv5プロキシサーバーを返す。
オブジェクトfactory の有効期限はQNetworkAccessManager が管理する。必要なときにオブジェクトは削除される。
注意: setProxy() で特定のプロキシが設定されている場合、ファクトリは使用されない。
proxyFactory()、setProxy()、QNetworkProxyQueryも参照 。
void QNetworkAccessManager::setRedirectPolicy(QNetworkRequest::RedirectPolicy policy)
マネージャのリダイレクトポリシーを指定されたpolicy に設定します。このポリシーは、マネージャによって作成される後続のすべてのリクエストに影響します。
マネージャーレベルで HTTP リダイレクトを有効または無効にするには、この関数を使用します。
注意: リクエストを作成するとき、QNetworkRequest::RedirectAttributePolicy が最優先され、次にマネージャーのポリシーが優先されます。
デフォルト値はQNetworkRequest::NoLessSafeRedirectPolicy です。手動でのリダイレクト処理に依存しているクライアントは、コード内でこのポリシーを明示的に設定することが推奨されます。
redirectPolicy() およびQNetworkRequest::RedirectPolicyも参照のこと 。
void QNetworkAccessManager::setStrictTransportSecurityEnabled(bool enabled)
enabled がtrue
の場合、QNetworkAccessManager は HTTP Strict Transport Security ポリシー(HSTS, RFC6797)に従う。リクエストを処理するとき、QNetworkAccessManager は自動的に "http "スキームを "https "に置き換え、HSTSホスト用の安全なトランス ポートを使用する。明示的に設定されている場合、ポート80はポート443に置き換えられる。
HSTSが有効な場合、HSTSヘッダを含み、セキュアなトランスポートで受信された各HTTPレスポンスに対して、QNetworkAccessManager 、有効なポリシーを持つホストを記憶するか、期限切れまたは無効なHSTSポリシーを持つホストを削除して、HSTSキャッシュを更新する。
isStrictTransportSecurityEnabled()も参照のこと 。
void QNetworkAccessManager::setTransferTimeout(int timeout)
転送タイムアウトとしてtimeout をミリ秒単位で設定する。
setTransferTimeout(std::chrono::milliseconds)、transferTimeout()、transferTimeoutAsDuration() も参照 。
[since 6.7]
void QNetworkAccessManager::setTransferTimeout(std::chrono::milliseconds duration = QNetworkRequest::DefaultTransferTimeout)
データが交換されなかった場合に転送を中止するタイムアウトduration を設定する。
タイムアウトが切れる前にバイトが転送されなかった場合、転送は中止される。ゼロは、タイマーが設定されないことを意味する。引数が与えられない場合、タイムアウトはQNetworkRequest::DefaultTransferTimeout である。 この関数が呼ばれない場合、タイムアウトは無効になり、値はゼロになる。実行されるリクエストに設定される、リクエスト固有のゼロ以外のタイムア ウトは、この値を上書きする。つまり、QNetworkAccessManager でタイムアウトが有効になっている場合、タイムアウトのないリクエストを実行するためには、タイムアウトを無効にする必要があります。
この関数は Qt 6.7 で導入されました。
transferTimeoutAsDuration()も参照してください 。
[signal]
void QNetworkAccessManager::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors)
このシグナルは、SSL/TLSセッションのセットアップ中にエラーが発生した場合に発行されます。errors パラメータにはエラーのリストが含まれ、reply はこれらのエラーに遭遇したQNetworkReply です。
エラーが致命的ではなく、接続を続行することを示すために、このシグナルに接続されたスロットからQNetworkReply::ignoreSslErrors() 関数が呼ばれなければなりません。この関数が呼ばれない場合、SSLセッションは(URLを含む)データが交換される前に破棄されます。
このシグナルは、セキュリティが侵害されている可能性があることを示すエラーメッセージをユーザーに表示し、SSL設定を表示するために使用することができます(取得するにはsslConfiguration()を参照してください)。リモート証明書を分析した後、ユーザーが続行することを決定した場合、スロットはignoreSslErrors()を呼び出すべきである。
QSslSocket::sslErrors()、QNetworkReply::sslErrors()、QNetworkReply::sslConfiguration()、QNetworkReply::ignoreSslErrors()も参照 。
QList<QHstsPolicy> QNetworkAccessManager::strictTransportSecurityHosts() const
HTTP Strict Transport Security ポリシーのリストを返します。このリストは、"Strict-Transport-Security" レスポンスヘッダから HSTS キャッシュが更新された場合、addStrictTransportSecurityHosts() で最初に設定されたものとは異なる可能性があります。
addStrictTransportSecurityHosts() およびQHstsPolicyも参照のこと 。
[virtual]
QStringList QNetworkAccessManager::supportedSchemes() const
アクセスマネージャがサポートするすべてのURLスキームを一覧表示する。
このメソッドを再実装して、QNetworkAccessManager サブクラスでサポートされている独自のスキーマを提供します。例えば、サブクラスが新しいプロトコルのサポートを提供する場合に必要です。
int QNetworkAccessManager::transferTimeout() const
転送に使用するタイムアウトをミリ秒単位で返します。
setTransferTimeout()も参照 。
[since 6.7]
std::chrono::milliseconds QNetworkAccessManager::transferTimeoutAsDuration() const
タイムアウト時間 データが交換されなかった場合に転送が中止されるタイムアウト時間を返します。
デフォルトの継続時間はゼロで、これはタイムアウトが使用されないことを意味します。
この関数は Qt 6.7 で導入されました。
setTransferTimeout(std::chrono::milliseconds)も参照してください 。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。