Spec-Zone.ru › Qt 5.11

Класс QHttpPart

Класс QHttpPart хранит часть тела, используемую внутри сообщения HTTP multipart MIME. Подробнее...

Заголовок: #include <QHttpPart>
qmake: QT += network
С момента: Qt 4.8
  • Список всех членов, включая унаследованные

Открытые функции

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=(QHttpPart &&other)
QHttpPart & operator=(const QHttpPart &other)
bool operator==(const QHttpPart &other) const

Подробное описание

Класс QHttpPart хранит часть тела, используемую внутри сообщения HTTP multipart MIME.

Класс QHttpPart хранит часть тела, используемую внутри сообщения HTTP multipart MIME (которое представлено классом QHttpMultiPart). QHttpPart состоит из блока заголовков и блока данных, разделённых двумя последовательными новыми строками. Пример одной части:

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

here goes the body

Для установки заголовков используйте setHeader() и setRawHeader(), которые ведут себя точно так же, как QNetworkRequest::setHeader() и QNetworkRequest::setRawHeader().

Для чтения небольших фрагментов данных используйте setBody(); для больших блоков данных, например, изображений, используйте setBodyDevice(). Последний метод экономит память, не копируя данные, а читая их напрямую из устройства. Это означает, что устройство должно быть открыто и доступно для чтения в момент отправки сообщения multipart, содержащего часть тела, по сети через 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 не принимает владение устройством при установке, поэтому разработчик несёт ответственность за его уничтожение, когда оно больше не нужно. Хорошей идеей может быть назначение родительского объекта сообщения multipart для устройства, как описано в документации для QHttpMultiPart.

См. также QHttpMultiPart и QNetworkAccessManager.

Документация по функциям-членам

QHttpPart::QHttpPart()

Создаёт пустой объект QHttpPart.

QHttpPart::QHttpPart(const QHttpPart &other)

Создаёт копию other.

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 является последовательным (например, сокеты, но не файлы), QNetworkAccessManager::post() должен быть вызван после того, как device испустил событие finished(). Для отмены установки устройства и использования данных, заданных через 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), необработанный формат будет проанализирован, и соответствующий «приготовленный» заголовок также будет установлен.

Примечание: Установка одного и того же заголовка дважды перезаписывает предыдущую установку. Чтобы добиться поведения нескольких HTTP-заголовков с одинаковым именем, необходимо конкатенировать два значения, разделяя их запятой (",") и установить один единственный необработанный заголовок.

См. также QNetworkRequest::KnownHeaders, setHeader() и QNetworkRequest::setRawHeader().

void QHttpPart::swap(QHttpPart &other)

Меняет местами эту часть HTTP с other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была добавлена в Qt 5.0.

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

Возвращает true , если этот объект не равен other.

См. также operator==().

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

Оператор присваивания перемещения.

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

Создаёт копию other.

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

Возвращает true , если этот объект равен other (то есть, если у них одинаковые заголовки и тело).

См. также operator!=().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qhttppart.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API