QHttpPart Class

QHttpPart クラスは、HTTP マルチパート MIME メッセージの内部で使用するボディパートを保持します。詳細...

Header: #include <QHttpPart>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

パブリック関数

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::KnownHeaderssetRawHeader()、QNetworkRequest::setHeader()も参照

void QHttpPart::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)

ヘッダーheaderName の値をheaderValue に設定する。headerName が既知のヘッダ(QNetworkRequest::KnownHeaders を参照)に対応する場合、生の書式が解析され、対応する「cooked」ヘッダも設定される。

注意: 同じヘッダーを2回設定すると、前の設定が上書きされます。同じ名前の複数のHTTPヘッダーの動作を実現するには、2つの値をカンマ(",")で区切って連結し、1つのrawヘッダーを設定する必要があります。

QNetworkRequest::KnownHeaderssetHeader()、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)

デバッグ用に、partdebug オブジェクトに書き込む。デバイスが設定されていない限り、ボディのサイズが表示されます。

この関数は Qt 6.8 で導入されました。

デバッグテクニックも参照してください

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。