QHttpPart Class
La clase QHttpPart contiene una parte del cuerpo que se utilizará dentro de un mensaje HTTP MIME multiparte. Más...
| Cabecera: | #include <QHttpPart> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- Lista de todos los miembros, incluyendo los heredados
- QHttpPart es parte de la API de Programación de Redes y Clases Implícitamente Compartidas.
Funciones Públicas
| 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 |
No miembros relacionados
(since 6.8) QDebug | operator<<(QDebug debug, const QHttpPart &part) |
Descripción detallada
La clase QHttpPart contiene una parte del cuerpo que se utilizará dentro de un mensaje MIME HTTP multiparte (que está representado por la clase QHttpMultiPart ). Una QHttpPart consta de un bloque de cabecera y un bloque de datos, separados entre sí por dos nuevas líneas consecutivas. Un ejemplo para una parte sería
Content-Type: text/plain Content-Disposition: form-data; name="text" here goes the body
Para establecer cabeceras, utilice setHeader() y setRawHeader(), que se comportan exactamente igual que QNetworkRequest::setHeader() y QNetworkRequest::setRawHeader().
Para leer pequeños fragmentos de datos, utilice setBody(); para bloques de datos más grandes como, por ejemplo, imágenes, utilice setBodyDevice(). Este último método ahorra memoria al no copiar los datos internamente, sino leerlos directamente del dispositivo. Esto significa que el dispositivo debe estar abierto y legible en el momento en que el mensaje multiparte que contiene la parte del cuerpo se envía por la red a través de QNetworkAccessManager::post().
Para construir un QHttpPart con un cuerpo pequeño, considere el siguiente fragmento (esto produce los datos mostrados en el ejemplo anterior):
QHttpPart textPart; textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain")); textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\"")); textPart.setBody("here goes the body");
Para construir un QHttpPart leyendo desde un dispositivo (por ejemplo, un archivo), se puede aplicar lo siguiente:
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);
Ten en cuenta que QHttpPart no toma propiedad del dispositivo cuando se establece, por lo que es responsabilidad del desarrollador destruirlo cuando ya no se necesite. Una buena idea podría ser establecer el mensaje multiparte como objeto padre para el dispositivo, como se documenta en la documentación de QHttpMultiPart.
Véase también QHttpMultiPart y QNetworkAccessManager.
Documentación de las funciones miembro
QHttpPart::QHttpPart()
Construye un objeto QHttpPart vacío.
QHttpPart::QHttpPart(const QHttpPart &other)
Crea una copia de other.
[noexcept] QHttpPart::~QHttpPart()
Destruye este QHttpPart.
void QHttpPart::setBody(const QByteArray &body)
Establece el cuerpo de esta parte MIME en body. El cuerpo establecido con este método se utilizará a menos que el dispositivo se establezca mediante setBodyDevice(). Para una gran cantidad de datos (por ejemplo, una imagen), utilice setBodyDevice(), que no copiará los datos internamente.
Véase también setBodyDevice().
void QHttpPart::setBodyDevice(QIODevice *device)
Establece el dispositivo desde el que se leerá el contenido en device. Para grandes cantidades de datos, este método debería preferirse a setBody(), porque el contenido no se copia cuando se utiliza este método, sino que se lee directamente del dispositivo. device debe estar abierto y ser legible. QHttpPart no se apropia de device, es decir, el dispositivo debe cerrarse y destruirse si es necesario. si device es secuencial (por ejemplo, sockets, pero no archivos), QNetworkAccessManager::post() debe llamarse después de que device haya emitido finished(). Para desestablecer el dispositivo y utilizar los datos establecidos a través de setBody(), utilice "setBodyDevice(0)".
Véase también setBody() y QNetworkAccessManager::post().
void QHttpPart::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
Establece el valor de la cabecera conocida header para que sea value, anulando cualquier cabecera establecida previamente.
Véase también QNetworkRequest::KnownHeaders, setRawHeader(), y QNetworkRequest::setHeader().
void QHttpPart::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
Establece la cabecera headerName con el valor headerValue. Si headerName corresponde a una cabecera conocida (véase QNetworkRequest::KnownHeaders), se analizará el formato sin procesar y se establecerá también la cabecera "cocinada" correspondiente.
Nota: Establecer la misma cabecera dos veces anula la configuración anterior. Para lograr el comportamiento de múltiples cabeceras HTTP del mismo nombre, debe concatenar los dos valores, separándolos con una coma (",") y establecer una única cabecera raw.
Véase también QNetworkRequest::KnownHeaders, setHeader(), y QNetworkRequest::setRawHeader().
[noexcept] void QHttpPart::swap(QHttpPart &other)
Cambia esta parte HTTP por other. Esta operación es muy rápida y nunca falla.
bool QHttpPart::operator!=(const QHttpPart &other) const
Devuelve true si este objeto no es el mismo que other.
Véase también operator==().
QHttpPart &QHttpPart::operator=(const QHttpPart &other)
Crea una copia de other.
bool QHttpPart::operator==(const QHttpPart &other) const
Devuelve true si este objeto es el mismo que other (es decir, si tienen las mismas cabeceras y cuerpo).
Véase también operator!=().
No miembros relacionados
[since 6.8] QDebug operator<<(QDebug debug, const QHttpPart &part)
Escribe la dirección part en el objeto debug con fines de depuración. A menos que se establezca un dispositivo, se muestra el tamaño del cuerpo.
Esta función se introdujo en Qt 6.8.
Véase también Técnicas de depuración.
© 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.