Auf dieser Seite

QHttpPart Class

Die Klasse „QHttpPart“ enthält einen Body-Teil, der innerhalb einer HTTP-Multipart-MIME-Nachricht verwendet werden soll. Mehr...

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

Öffentliche Funktionen

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)

Ausführliche Beschreibung

Die Klasse `QHttpPart` enthält einen Body-Teil, der innerhalb einer HTTP-Multipart-MIME-Nachricht (die durch die Klasse ` QHttpMultiPart ` dargestellt wird) verwendet werden soll. Ein `QHttpPart` besteht aus einem Header-Block und einem Datenblock, die durch zwei aufeinanderfolgende Zeilenumbrüche voneinander getrennt sind. Ein Beispiel für einen Teil wäre:

Content-Type: text/plain
Content-Disposition: form-data; name="text"

here goes the body

Verwenden Sie zum Setzen von Headern die Funktionen ` setHeader()` und ` setRawHeader()`, die sich genau wie ` QNetworkRequest::setHeader()` und ` QNetworkRequest::setRawHeader()` verhalten.

Zum Lesen kleiner Datenmengen verwenden Sie ` setBody()`; für größere Datenblöcke wie z. B. Bilder verwenden Sie ` setBodyDevice()`. Die letztgenannte Methode spart Speicherplatz, da die Daten nicht intern kopiert, sondern direkt vom Gerät gelesen werden. Das bedeutet, dass das Gerät geöffnet und lesbar sein muss, sobald die Multipart-Nachricht, die den Body-Teil enthält, über ` QNetworkAccessManager::post()` im Netzwerk gesendet wird.

Um ein `QHttpPart` mit einem kleinen Body zu erstellen, beachten Sie den folgenden Codeausschnitt (dies erzeugt die im obigen Beispiel gezeigten Daten):

QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
textPart.setBody("here goes the body");

Um ein `QHttpPart` zu erstellen, das aus einem Gerät (z. B. einer Datei) liest, kann Folgendes angewendet werden:

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);

Beachten Sie, dass QHttpPart beim Setzen nicht die Kontrolle über das Gerät übernimmt; es liegt daher in der Verantwortung des Entwicklers, es zu löschen, wenn es nicht mehr benötigt wird. Es empfiehlt sich, die Multipart-Nachricht als übergeordnetes Objekt für das Gerät festzulegen, wie in der Dokumentation zu QHttpMultiPart beschrieben.

Siehe auch QHttpMultiPart und QNetworkAccessManager.

Dokumentation der Mitgliedsfunktionen

QHttpPart::QHttpPart()

Erstellt ein leeres QHttpPart-Objekt.

QHttpPart::QHttpPart(const QHttpPart &other)

Erstellt eine Kopie von „ other “.

[noexcept] QHttpPart::~QHttpPart()

Löscht diese Seite: QHttpPart.

void QHttpPart::setBody(const QByteArray &body)

Setzt den Haupttext dieses MIME-Teils auf body. Der mit dieser Methode festgelegte Haupttext wird verwendet, sofern das Gerät nicht über setBodyDevice() festgelegt wurde. Bei großen Datenmengen (z. B. einem Bild) verwenden Sie setBodyDevice(), wodurch die Daten intern nicht kopiert werden.

Siehe auch setBodyDevice().

void QHttpPart::setBodyDevice(QIODevice *device)

Stellt das Gerät so ein, dass der Inhalt von device gelesen wird. Bei großen Datenmengen sollte diese Methode gegenüber setBody() bevorzugt werden, da der Inhalt bei Verwendung dieser Methode nicht kopiert, sondern direkt vom Gerät gelesen wird. device muss geöffnet und lesbar sein. QHttpPart übernimmt keine Verantwortung für device, d. h., das Gerät muss geschlossen und gegebenenfalls zerstört werden. Wenn „ device “ sequenziell ist (z. B. Sockets, jedoch keine Dateien), sollte „ QNetworkAccessManager::post()“ aufgerufen werden, nachdem „ device “ „finished()“ ausgegeben hat. Um das Gerät zurückzusetzen und die über „ setBody()“ festgelegten Daten zu verwenden, verwenden Sie „setBodyDevice(0)“.

Siehe auch „ setBody()“ und „ QNetworkAccessManager::post()“.

void QHttpPart::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)

Setzt den Wert des bekannten Headers „ header “ auf „ value “ und überschreibt damit alle zuvor festgelegten Header.

Siehe auch „ QNetworkRequest::KnownHeaders“ , „ setRawHeader()“ und „ QNetworkRequest::setHeader()“.

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

Setzt den Header „ headerName “ auf den Wert „ headerValue “. Wenn „ headerName “ einem bekannten Header entspricht (siehe QNetworkRequest::KnownHeaders), wird das Raw-Format geparst und der entsprechende „aufbereitete“ Header ebenfalls gesetzt.

Hinweis: Wird derselbe Header zweimalgesetzt , wird die vorherige Einstellung überschrieben. Um das Verhalten mehrerer HTTP-Header mit demselben Namen zu erzielen, sollten Sie die beiden Werte durch ein Komma („,“) getrennt aneinanderreihen und einen einzigen Roh-Header setzen.

Siehe auch QNetworkRequest::KnownHeaders, setHeader() und QNetworkRequest::setRawHeader().

[noexcept] void QHttpPart::swap(QHttpPart &other)

Ersetzt diesen HTTP-Teil durch „ other “. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.

bool QHttpPart::operator!=(const QHttpPart &other) const

Gibt „ true “ zurück, wenn dieses Objekt nicht mit „ other “ übereinstimmt.

Siehe auch operator==().

QHttpPart &QHttpPart::operator=(const QHttpPart &other)

Erstellt eine Kopie von „ other “.

bool QHttpPart::operator==(const QHttpPart &other) const

Gibt „ true “ zurück, wenn dieses Objekt mit „ other “ identisch ist (d. h., wenn beide dieselben Header und denselben Body haben).

Siehe auch operator!=().

Verwandte Nicht-Mitglieder

[since 6.8] QDebug operator<<(QDebug debug, const QHttpPart &part)

Schreibt die „ part “ zu Debugging-Zwecken in das „ debug “-Objekt. Sofern kein Gerät festgelegt ist, wird die Größe des Textkörpers angezeigt.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch Debugging-Techniken.

© 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.