QWebEngineUrlRequestJob Class
QWebEngineUrlRequestJobクラスはカスタムURLリクエストを表します。詳細...
ヘッダー | #include <QWebEngineUrlRequestJob> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS WebEngineCore) target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore) |
qmake: | QT += webenginecore |
継承: | QObject |
パブリックな型
enum | Error { NoError, UrlNotFound, UrlInvalid, RequestAborted, RequestDenied, RequestFailed } |
パブリック関数
void | fail(QWebEngineUrlRequestJob::Error r) |
QUrl | initiator() const |
void | redirect(const QUrl &url) |
void | reply(const QByteArray &contentType, QIODevice *device) |
(since 6.7) QIODevice * | requestBody() const |
QMap<QByteArray, QByteArray> | requestHeaders() const |
QByteArray | requestMethod() const |
QUrl | requestUrl() const |
(since 6.6) void | setAdditionalResponseHeaders(const QMultiMap<QByteArray, QByteArray> &additionalResponseHeaders) const |
詳細説明
QWebEngineUrlRequestJob はQWebEngineUrlSchemeHandler::requestStarted() に与えられ、クラスの派生実装によって処理されなければなりません。ジョブは、reply()、redirect()、fail() のいずれかを呼び出すことで処理できます。
このクラスはウェブ・エンジンが所有するので、削除する必要はありません。ただし、ウェブ・エンジンは不要になったジョブを削除する可能性があるため、オブジェクトへのポインタが格納されている場合はシグナルQObject::destroyed() を監視する必要があります。
メンバ型ドキュメント
enum QWebEngineUrlRequestJob::Error
この列挙型は、発生したエラーのタイプを保持する:
定数 | 値 | 説明 |
---|---|---|
QWebEngineUrlRequestJob::NoError | 0 | リクエストは成功しました。(Qt 6.8以降では非推奨) |
QWebEngineUrlRequestJob::UrlNotFound | 1 | 要求された URL が見つかりません。 |
QWebEngineUrlRequestJob::UrlInvalid | 2 | 要求されたURLは無効です。 |
QWebEngineUrlRequestJob::RequestAborted | 3 | リクエストはキャンセルされました。 |
QWebEngineUrlRequestJob::RequestDenied | 4 | リクエストは拒否されました。 |
QWebEngineUrlRequestJob::RequestFailed | 5 | リクエストは失敗しました。 |
メンバー関数ドキュメント
void QWebEngineUrlRequestJob::fail(QWebEngineUrlRequestJob::Error r)
エラーでリクエストに失敗するr 。
Errorも参照してください 。
QUrl QWebEngineUrlRequestJob::initiator() const
リクエストを開始したコンテンツのオリジンをシリアライズして返します。
一般的に、オリジンはスキーム、ホスト名、ポートで構成されます。例えば、"http://localhost:8080"
は有効なオリジンです。ポートがスキームのデフォルトポートである場合は省略されます (http
の場合は 80、https
の場合は 443 )。ホスト名は、file
やqrc
のような非ネットワーク・スキームでは省略されます。
ただし、一意のオリジンを表す特別な値"null"
もあります。これは例えば、サンドボックス化されたiframeのオリジンです。この特別なオリジンの目的は、同一オリジンチェックにおいて、他のすべてのオリジンと常に異なることです。言い換えると、一意なオリジンを持つコンテンツは、他のいかなるコンテンツに対しても特権的なアクセス権を持つべきではありません。
最後に、リクエストがWebコンテンツによって開始されなかった場合、関数は空のQUrl を返します。 これは例えば、QWebEnginePage::setUrl()を呼び出したときに起こります。
この値は、安全なクロスオリジンチェック を実装するために使用できる。
void QWebEngineUrlRequestJob::redirect(const QUrl &url)
リクエストをurl にリダイレクトする。
void QWebEngineUrlRequestJob::reply(const QByteArray &contentType, QIODevice *device)
リクエストに対して、device とコンテントタイプcontentType 。コンテンツタイプはHTTPのContent-Typeヘッダーと似ており、MIMEタイプ、または MIMEタイプとcharsetエンコーディングを組み合わせたものである:「text/html; charset=utf-8」。
ユーザーは、ジョブが削除されるまで、device が別のスレッドで使用されることに注意しなければならない。メイン・スレッドからの同時アクセスが必要な場合、ユーザーはQMutex を使用するなどして、device へのアクセスをスレッドセーフにする責任がある。device オブジェクトはウェブエンジンの所有物ではないことに注意してください。したがって、QWebEngineUrlRequestJob のシグナルQObject::destroyed() を監視する必要があります。
デバイスは、少なくともジョブが存在する限り利用可能であり続ける必要があります。新しく構築されたデバイスでこのメソッドを呼び出す場合、1つの解決策は、次のようにデバイスをジョブの子として作成するか、ジョブが削除されたときにそれ自体を削除することです:
[since 6.7]
QIODevice *QWebEngineUrlRequestJob::requestBody() const
リクエストボディにアクセスするためのQIODevice へのポインタを返します。リクエストボディは、例えばリクエストがPOSTリクエストの場合、データを含むことができます。リクエストボディが空の場合、QIODevice はそれを反映し、そのボディに対して読み取り操作を実行してもデータを返しません。
この関数は Qt 6.7 で導入されました。
QIODeviceも参照してください 。
QMap<QByteArray, QByteArray> QWebEngineUrlRequestJob::requestHeaders() const
リクエストに追加された HTTP ヘッダを返します。
QByteArray QWebEngineUrlRequestJob::requestMethod() const
リクエストの HTTP メソッドを返します (例: GET または POST)。
QUrl QWebEngineUrlRequestJob::requestUrl() const
要求されたURLを返します。
[since 6.6]
void QWebEngineUrlRequestJob::setAdditionalResponseHeaders(const QMultiMap<QByteArray, QByteArray> &additionalResponseHeaders) const
additionalResponseHeaders を設定する。これらのレスポンスの追加ヘッダは、QWebEngineUrlRequestJob::reply(constQByteArray&,QIODevice*) が呼び出されたときにのみ使用されます。
この関数は Qt 6.6 で導入されました。
© 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.