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は、ネットワークプログラミングAPIおよび暗黙的に共有されるクラスの一部です。
パブリック関数
| 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 を参照)に対応する場合、生形式のデータが解析され、対応する「加工済み」のヘッダーも設定されます。
注: 同じヘッダーを 2回設定すると 、以前の設定は上書きされます。同じ名前の複数の HTTP ヘッダーの挙動を実現するには、2 つの値をコンマ(",")で区切って連結し、1 つの生のヘッダーとして設定する必要があります。
関連項目: 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!=()も参照してください 。
© 2026 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.