Spec-Zone.ru › Qt 5.12

Класс 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), формат raw будет проанализирован, и соответствующий заголовок «cooked» также будет установлен.

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

См. также 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/qt-5.12/qhttppart.html

Spec-Zone.ru

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