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 は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 を参照)に対応する場合、生の書式が解析され、対応する「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)
デバッグ用に、part をdebug オブジェクトに書き込む。デバイスが設定されていない限り、ボディのサイズが表示されます。
この関数は Qt 6.8 で導入されました。
デバッグテクニックも参照してください 。
©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。