Sur cette page

QHttpPart Class

La classe QHttpPart contient une partie du corps destinée à être utilisée dans un message MIME HTTP multipart. En savoir plus...

En-tête : #include <QHttpPart>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network

Fonctions publiques

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)

Description détaillée

La classe QHttpPart contient une partie de corps destinée à être utilisée dans un message MIME HTTP multipart (représenté par la classe QHttpMultiPart ). Une instance de QHttpPart se compose d’un bloc d’en-tête et d’un bloc de données, séparés l’un de l’autre par deux sauts de ligne consécutifs. Voici un exemple de partie :

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

here goes the body

Pour définir les en-têtes, utilisez setHeader() et setRawHeader(), qui se comportent exactement comme QNetworkRequest::setHeader() et QNetworkRequest::setRawHeader().

Pour lire de petits éléments de données, utilisez setBody(); pour des blocs de données plus volumineux, comme par exemple des images, utilisez setBodyDevice(). Cette dernière méthode permet d'économiser de la mémoire en ne copiant pas les données en interne, mais en les lisant directement depuis le périphérique. Cela signifie que le périphérique doit être ouvert et accessible en lecture au moment où le message multipart contenant la partie du corps est envoyé sur le réseau via QNetworkAccessManager::post().

Pour créer un QHttpPart avec un corps de petite taille, considérez l’extrait de code suivant (celui-ci produit les données présentées dans l’exemple ci-dessus) :

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

Pour créer un QHttpPart lisant à partir d’un périphérique (par exemple, un fichier), vous pouvez utiliser ce qui suit :

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

Notez que QHttpPart ne prend pas possession du périphérique lors de sa création ; il incombe donc au développeur de le détruire lorsqu’il n’est plus nécessaire. Il peut être judicieux de définir le message multipart comme objet parent du périphérique, comme indiqué dans la documentation relative à QHttpMultiPart.

Voir également QHttpMultiPart et QNetworkAccessManager.

Documentation des fonctions membres

QHttpPart::QHttpPart()

Crée un objet QHttpPart vide.

QHttpPart::QHttpPart(const QHttpPart &other)

Crée une copie de other.

[noexcept] QHttpPart::~QHttpPart()

Supprime cette page : QHttpPart.

void QHttpPart::setBody(const QByteArray &body)

Définit le corps de cette partie MIME sur body. Le corps défini à l'aide de cette méthode sera utilisé, sauf si le périphérique est configuré via setBodyDevice(). Pour des volumes de données importants (par exemple, une image), utilisez setBodyDevice(), qui ne copiera pas les données en interne.

Voir également setBodyDevice().

void QHttpPart::setBodyDevice(QIODevice *device)

Définit le périphérique à partir duquel lire le contenu sur device. Pour les volumes importants de données, cette méthode est préférable à setBody(), car elle ne copie pas le contenu, mais le lit directement à partir du périphérique. device doit être ouvert et accessible en lecture. QHttpPart ne prend pas possession de device; le périphérique doit donc être fermé et détruit si nécessaire. Si device est séquentiel (par exemple, des sockets, mais pas des fichiers), QNetworkAccessManager::post() doit être appelé après que device a émis finished(). Pour désactiver le périphérique et utiliser les données définies via setBody(), utilisez « setBodyDevice(0) ».

Voir également setBody() et QNetworkAccessManager::post().

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

Définit la valeur de l'en-tête connu « header » sur « value », en remplaçant tout en-tête défini précédemment.

Voir également QNetworkRequest::KnownHeaders, setRawHeader() et QNetworkRequest::setHeader().

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

Définit l'en-tête headerName avec la valeur headerValue. Si headerName correspond à un en-tête connu (voir QNetworkRequest::KnownHeaders), le format brut sera analysé et l'en-tête « préparé » correspondant sera également défini.

Remarque : définir deux fois le même en-tête remplace la définition précédente. Pour obtenir le comportement correspondant à plusieurs en-têtes HTTP portant le même nom, vous devez concaténer les deux valeurs en les séparant par une virgule (« , ») et définir un seul en-tête brut.

Voir également QNetworkRequest::KnownHeaders, setHeader() et QNetworkRequest::setRawHeader().

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

Remplace cette partie HTTP par other. Cette opération est très rapide et ne rencontre jamais d'échec.

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

Renvoie ` true ` si cet objet n'est pas identique à ` other`.

Voir également operator==().

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

Crée une copie de other.

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

Renvoie « true » si cet objet est identique à « other » (c'est-à-dire s'ils possèdent les mêmes en-têtes et le même corps).

Voir aussi operator!=().

Éléments non membres associés

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

Écrit l'part ion dans l'objet debug à des fins de débogage. À moins qu'un périphérique ne soit défini, c'est la taille du corps qui s'affiche.

Cette fonction a été introduite dans Qt 6.8.

Voir également Techniques de débogage.

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