QHttpPart Class
QHttpPart クラスは、HTTP マルチパート MIME メッセージの内部で使用するボディパートを保持します。詳細...
ヘッダ | #include <QHttpPart> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 継承メンバを含む全メンバのリスト
- QHttpPart はNetwork Programming APIおよびImplicitly Shared Classes に含まれています。
パブリック関数
QHttpPart() | |
QHttpPart(const QHttpPart &other) | |
~QHttpPart() | |
void | setBody(const QByteArray &body) |
void | setBodyDevice(QIODevice *device) |
void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) |
void | setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) |
void | swap(QHttpPart &other) |
bool | operator!=(const QHttpPart &other) const |
QHttpPart & | operator=(const QHttpPart &other) |
bool | operator==(const QHttpPart &other) const |
関連する非メンバー
(since 6.8) QDebug | operator<<(QDebug debug, const QHttpPart &part) |
詳細説明
QHttpPart クラスは、HTTP マルチパート MIME メッセージ (QHttpMultiPart クラスで表されます) 内で使用されるボディ部分を保持します。QHttpPart はヘッダブロックとデータブロックで構成され、これらは連続する 2 行の改行で区切られます。1つのパートの例は次のようになります:
Content-Type: text/plain Content-Disposition: form-data; name="text" here goes the body
ヘッダーを設定するには、setHeader ()とsetRawHeader ()を使用します。QNetworkRequest::setHeader ()とQNetworkRequest::setRawHeader ()とまったく同じように動作します。
小さなデータの読み取りには、setBody ()を使用します。画像などの大きなデータ・ブロックには、setBodyDevice ()を使用します。後者の方法では、データを内部的にコピーせず、デバイスから直接読み込むため、メモリを節約できます。つまり、ボディ・パートを含むマルチパート・メッセージがQNetworkAccessManager::post() を介してネットワーク上に送信される時点で、デバイスがオープンされ、読み取り可能になっている必要があります。
小さなボディを持つ QHttpPart を構築するために、以下のスニペットを考えてみましょう (これは、上記の例に示されているデータを生成します):
QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain")); textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\"")); textPart.setBody("here goes the body");
デバイス (ファイルなど) から読み込む QHttpPart を作成するには、次のようにします:
QHttpPart imagePart; imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg")); imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\"")); imagePart.setRawHeader("Content-ID", "my@content.id"); // add any headers you like via setRawHeader() QFile *file = new QFile("image.jpg"); file->open(QIODevice::ReadOnly); imagePart.setBodyDevice(file);
QHttpPart は設定されてもデバイスの所有権を持たないので、不要になったら開発者の責任で破棄してください。QHttpMultiPart のドキュメントに記載されているように、マルチパート・メッセージをデバイスの親オブジェクトとして設定するのがよいでしょう。
QHttpMultiPart およびQNetworkAccessManagerも参照して ください。
メンバ関数のドキュメント
QHttpPart::QHttpPart()
空の QHttpPart オブジェクトを構築します。
QHttpPart::QHttpPart(const QHttpPart &other)
other のコピーを作成する。
[noexcept]
QHttpPart::~QHttpPart()
このQHttpPart を破壊する。
void QHttpPart::setBody(const QByteArray &body)
この MIME パートのボディをbody に設定します。 このメソッドで設定したボディは、setBodyDevice() でデバイスを設定しない限り使用されます。大容量のデータ (画像など) の場合は、setBodyDevice() を使用してください。
setBodyDevice()も参照 。
void QHttpPart::setBodyDevice(QIODevice *device)
コンテンツを読み込むデバイスをdevice に設定する。setBodyこのメソッドを使用する場合、コンテンツはコピーされず、デバイ スから直接読み込まれるためである。device は、オープンされ、読み取り可能でなければならない。QHttpPart は、device の所有権を持たない。つまり、必要に応じてデバイスをクローズし、破棄する必要がある。device がシーケンシャルな場合(ソケットなど、ファイルではない)、device が finished() を発行した後に、QNetworkAccessManager::post() を呼び出す必要がある。デバイスの設定を解除し、setBody()で設定されたデータを使用するには、 "setBodyDevice(0) "を使用する。
setBody() およびQNetworkAccessManager::post()も参照 。
void QHttpPart::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
既知のヘッダheader の値をvalue に設定し、以前に設定されていたヘッダを上書きする。
QNetworkRequest::KnownHeaders 、setRawHeader()、QNetworkRequest::setHeader()も参照 。
void QHttpPart::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
ヘッダーheaderName に値headerValue を設定する。headerName が既知のヘッダー(QNetworkRequest::KnownHeaders 参照)に対応する場合、rawフォーマットが解析され、対応する "cooked "ヘッダーも設定される。
注意: 同じヘッダーを2回設定すると、前の設定が上書きされます。同じ名前の複数のHTTPヘッダーの動作を実現するには、2つの値をカンマ(",")で区切って連結し、1つのrawヘッダーを設定する必要があります。
QNetworkRequest::KnownHeaders 、setHeader()、QNetworkRequest::setRawHeader()も参照の こと。
[noexcept]
void QHttpPart::swap(QHttpPart &other)
このHTTP部分をother と入れ替える。この操作は非常に速く、失敗することはない。
bool QHttpPart::operator!=(const QHttpPart &other) const
このオブジェクトがother と同じでない場合はtrue
を返す。
operator==()も参照 。
QHttpPart &QHttpPart::operator=(const QHttpPart &other)
other のコピーを作成する。
bool QHttpPart::operator==(const QHttpPart &other) const
このオブジェクトがother と同じ場合(すなわち、ヘッダとボディが同じ場合)、true
を返す。
operator!=()も参照 。
関連する非会員
[since 6.8]
QDebug operator<<(QDebug debug, const QHttpPart &part)
デバッグ用にdebug オブジェクトにpart を書き込む。デバイスが設定されていない限り、ボディのサイズが表示されます。
この関数は Qt 6.8 で導入されました。
デバッグテクニックも参照してください 。
© 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.