QHttpPart Class
La classe QHttpPart contient une partie du corps à utiliser dans un message MIME multipartite HTTP. Plus d'informations...
| En-tête : | #include <QHttpPart> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
- Liste de tous les membres, y compris les membres hérités
- QHttpPart fait partie de Network Programming API et de Implicitly Shared Classes.
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 |
Non-membres apparentés
(since 6.8) QDebug | operator<<(QDebug debug, const QHttpPart &part) |
Description détaillée
La classe QHttpPart contient une partie du corps à utiliser dans un message MIME multipartite HTTP (représenté par la classe QHttpMultiPart ). Une QHttpPart se compose d'un bloc d'en-tête et d'un bloc de données, qui sont séparés l'un de l'autre par deux nouvelles lignes consécutives. Voici un exemple de partie :
Content-Type: text/plain Content-Disposition: form-data; name="text" here goes the body
Pour définir des en-têtes, utilisez setHeader() et setRawHeader(), qui se comportent exactement comme QNetworkRequest::setHeader() et QNetworkRequest::setRawHeader().
Pour lire de petits morceaux de données, utilisez setBody() ; pour des blocs de données plus importants, 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 à partir du périphérique. Cela signifie que le périphérique doit être ouvert et lisible au moment où le message multipartite contenant la partie du corps est envoyé sur le réseau via QNetworkAccessManager::post().
Pour construire un QHttpPart avec un petit corps, considérez l'extrait suivant (il produit les données montré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 construire une QHttpPart lisant à partir d'un périphérique (par exemple un fichier), on peut appliquer 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);
Soyez conscient que QHttpPart ne prend pas la propriété du périphérique lorsqu'il est défini, il est donc de la responsabilité du développeur de le détruire lorsqu'il n'est plus nécessaire. Une bonne idée serait de définir le message multipart comme objet parent pour le périphérique, comme indiqué dans la documentation de QHttpMultiPart.
Voir également QHttpMultiPart et QNetworkAccessManager.
Documentation sur les fonctions membres
QHttpPart::QHttpPart()
Construit un objet QHttpPart vide.
QHttpPart::QHttpPart(const QHttpPart &other)
Crée une copie de other.
[noexcept] QHttpPart::~QHttpPart()
Détruit cette QHttpPart.
void QHttpPart::setBody(const QByteArray &body)
Définit le corps de cette partie MIME à body. Le corps défini avec cette méthode sera utilisé à moins que le périphérique ne soit défini via setBodyDevice(). Pour une grande quantité de données (par exemple une image), utilisez setBodyDevice(), qui ne copiera pas les données en interne.
Voir aussi setBodyDevice().
void QHttpPart::setBodyDevice(QIODevice *device)
Définit le dispositif à partir duquel le contenu doit être lu à l'adresse device. Pour les grandes quantités de données, cette méthode doit être préférée à setBody(), car le contenu n'est pas copié lors de l'utilisation de cette méthode, mais lu directement sur le périphérique. device doit être ouvert et lisible. QHttpPart ne prend pas possession de device, c'est-à-dire que le périphérique doit être fermé et détruit si nécessaire. si device est séquentiel (par exemple, les sockets, mais pas les 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)
Fixe la valeur de l'en-tête connu header à value, en remplaçant tous les en-têtes précédemment définis.
Voir aussi QNetworkRequest::KnownHeaders, setRawHeader(), et QNetworkRequest::setHeader().
void QHttpPart::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
Fixe l'en-tête headerName à la valeur headerValue. Si headerName correspond à un en-tête connu (voir QNetworkRequest::KnownHeaders), le format brut sera analysé et l'en-tête "cuit" correspondant sera également défini.
Remarque : le fait de définir deux fois le même en-tête annule le réglage précédent. Pour obtenir le comportement de plusieurs en-têtes HTTP du 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 aussi 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 n'échoue jamais.
bool QHttpPart::operator!=(const QHttpPart &other) const
Renvoie true si cet objet est différent de other.
Voir aussi 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 ont les mêmes en-têtes et le même corps).
Voir aussi operator!=().
Non-membres apparentés
[since 6.8] QDebug operator<<(QDebug debug, const QHttpPart &part)
Écrit l'adresse part dans l'objet debug à des fins de débogage. Si aucun périphérique n'est défini, la taille du corps est affichée.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi 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.