Spec-Zone.ru › Qt 5.6

Класс QHttpPart

Класс QHttpPart хранит часть тела, используемую внутри HTTP-сообщения 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-сообщения MIME с разделителями.

Класс QHttpPart хранит часть тела, используемую внутри HTTP-сообщения 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.6/qhttppart.html

Spec-Zone.ru

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