QWebEngineUrlRequestJob Class
QWebEngineUrlRequestJobクラスはカスタムURLリクエストを表します。詳細...
Header: | #include <QWebEngineUrlRequestJob> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS WebEngineCore) target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore) |
qmake: | QT += webenginecore |
Inherits: | 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 で導入されました。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。