- Qt 6.12
- Qt HTTP Server
- C++ Classes
- QHttpServerResponder
- Qt 6.12.0 Reference Documentation

# QHttpServerResponder Class

API for sending replies from an HTTP server. More...

Header: | `#include <QHttpServerResponder>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS HttpServer)` `target_link_libraries(mytarget PRIVATE Qt6::HttpServer)`
qmake: | `QT += httpserver`
Since: | Qt 6.4

- List of all members, including inherited members

## Public Types

enum class | StatusCode { Continue, SwitchingProtocols, Processing, Ok, Created, …, NetworkConnectTimeoutError }

## Public Functions

| QHttpServerResponder(QHttpServerResponder &&other)
| ~QHttpServerResponder()
`(since 6.11)` bool | isResponseCanceled() const
`(since 6.5)` void | sendResponse(const QHttpServerResponse &response)
`(since 6.8)` void | swap(QHttpServerResponder &other)
void | write(QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(const QJsonDocument &document, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(QIODevice *data, const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(QIODevice *data, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(const QByteArray &data, const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(const QByteArray &data, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
void | write(const QJsonDocument &document, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
`(since 6.8)` void | writeBeginChunked(const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)
`(since 6.8)` void | writeBeginChunked(const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
`(since 6.8)` void | writeBeginChunked(const QHttpHeaders &headers, QList<QHttpHeaders::WellKnownHeader> trailers, QHttpServerResponder::StatusCode status = StatusCode::Ok)
`(since 6.8)` void | writeChunk(const QByteArray &data)
`(since 6.8)` void | writeEndChunked(const QByteArray &data)
`(since 6.8)` void | writeEndChunked(const QByteArray &data, const QHttpHeaders &trailers)

## Detailed Description

Provides functions for writing back to an HTTP client with overloads for serializing JSON objects. It also has support for writing HTTP headers and status code.

## Member Type Documentation

### enum class QHttpServerResponder::StatusCode

HTTP status codes

Constant | Value
--- | ---
`QHttpServerResponder::StatusCode::Continue` | `100`
`QHttpServerResponder::StatusCode::SwitchingProtocols` | `101`
`QHttpServerResponder::StatusCode::Processing` | `102`
`QHttpServerResponder::StatusCode::Ok` | `200`
`QHttpServerResponder::StatusCode::Created` | `201`
`QHttpServerResponder::StatusCode::Accepted` | `202`
`QHttpServerResponder::StatusCode::NonAuthoritativeInformation` | `203`
`QHttpServerResponder::StatusCode::NoContent` | `204`
`QHttpServerResponder::StatusCode::ResetContent` | `205`
`QHttpServerResponder::StatusCode::PartialContent` | `206`
`QHttpServerResponder::StatusCode::MultiStatus` | `207`
`QHttpServerResponder::StatusCode::AlreadyReported` | `208`
`QHttpServerResponder::StatusCode::IMUsed` | `226`
`QHttpServerResponder::StatusCode::MultipleChoices` | `300`
`QHttpServerResponder::StatusCode::MovedPermanently` | `301`
`QHttpServerResponder::StatusCode::Found` | `302`
`QHttpServerResponder::StatusCode::SeeOther` | `303`
`QHttpServerResponder::StatusCode::NotModified` | `304`
`QHttpServerResponder::StatusCode::UseProxy` | `305`
`QHttpServerResponder::StatusCode::TemporaryRedirect` | `307`
`QHttpServerResponder::StatusCode::PermanentRedirect` | `308`
`QHttpServerResponder::StatusCode::BadRequest` | `400`
`QHttpServerResponder::StatusCode::Unauthorized` | `401`
`QHttpServerResponder::StatusCode::PaymentRequired` | `402`
`QHttpServerResponder::StatusCode::Forbidden` | `403`
`QHttpServerResponder::StatusCode::NotFound` | `404`
`QHttpServerResponder::StatusCode::MethodNotAllowed` | `405`
`QHttpServerResponder::StatusCode::NotAcceptable` | `406`
`QHttpServerResponder::StatusCode::ProxyAuthenticationRequired` | `407`
`QHttpServerResponder::StatusCode::RequestTimeout` | `408`
`QHttpServerResponder::StatusCode::Conflict` | `409`
`QHttpServerResponder::StatusCode::Gone` | `410`
`QHttpServerResponder::StatusCode::LengthRequired` | `411`
`QHttpServerResponder::StatusCode::PreconditionFailed` | `412`
`QHttpServerResponder::StatusCode::PayloadTooLarge` | `413`
`QHttpServerResponder::StatusCode::UriTooLong` | `414`
`QHttpServerResponder::StatusCode::UnsupportedMediaType` | `415`
`QHttpServerResponder::StatusCode::RequestRangeNotSatisfiable` | `416`
`QHttpServerResponder::StatusCode::ExpectationFailed` | `417`
`QHttpServerResponder::StatusCode::ImATeapot` | `418`
`QHttpServerResponder::StatusCode::MisdirectedRequest` | `421`
`QHttpServerResponder::StatusCode::UnprocessableEntity` | `422`
`QHttpServerResponder::StatusCode::Locked` | `423`
`QHttpServerResponder::StatusCode::FailedDependency` | `424`
`QHttpServerResponder::StatusCode::UpgradeRequired` | `426`
`QHttpServerResponder::StatusCode::PreconditionRequired` | `428`
`QHttpServerResponder::StatusCode::TooManyRequests` | `429`
`QHttpServerResponder::StatusCode::RequestHeaderFieldsTooLarge` | `431`
`QHttpServerResponder::StatusCode::UnavailableForLegalReasons` | `451`
`QHttpServerResponder::StatusCode::InternalServerError` | `500`
`QHttpServerResponder::StatusCode::NotImplemented` | `501`
`QHttpServerResponder::StatusCode::BadGateway` | `502`
`QHttpServerResponder::StatusCode::ServiceUnavailable` | `503`
`QHttpServerResponder::StatusCode::GatewayTimeout` | `504`
`QHttpServerResponder::StatusCode::HttpVersionNotSupported` | `505`
`QHttpServerResponder::StatusCode::VariantAlsoNegotiates` | `506`
`QHttpServerResponder::StatusCode::InsufficientStorage` | `507`
`QHttpServerResponder::StatusCode::LoopDetected` | `508`
`QHttpServerResponder::StatusCode::NotExtended` | `510`
`QHttpServerResponder::StatusCode::NetworkAuthenticationRequired` | `511`
`QHttpServerResponder::StatusCode::NetworkConnectTimeoutError` | `599`

## Member Function Documentation

### `[noexcept]` QHttpServerResponder::QHttpServerResponder(QHttpServerResponder &&other)

Move-constructs a QHttpServerResponder instance, making it point at the same object that other was pointing to.

### `[noexcept]` QHttpServerResponder::~QHttpServerResponder()

Destroys a QHttpServerResponder.

### `[since 6.11]` bool QHttpServerResponder::isResponseCanceled() const

Returns true if the client has canceled the response. Used to make it possible to exit early in handler when the response is canceled.

This function was introduced in Qt 6.11.

### `[since 6.5]` void QHttpServerResponder::sendResponse(const QHttpServerResponse &response)

Sends a HTTP response to the client.

This function was introduced in Qt 6.5.

### `[noexcept, since 6.8]` void QHttpServerResponder::swap(QHttpServerResponder &other)

Swaps QHttpServerResponder other with this QHttpServerResponder. This operation is very fast and never fails.

This function was introduced in Qt 6.8.

### void QHttpServerResponder::write(QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status.

Note: This function sets HTTP Content-Type header as `"application/x-empty"`.

### void QHttpServerResponder::write(const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status and HTTP Headers headers.

### void QHttpServerResponder::write(const QJsonDocument &document, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status, and JSON document document.

Note: This function sets HTTP Content-Type header as `"application/json"`.

### void QHttpServerResponder::write(QIODevice *data, const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status and a MIME type mimeType. The I/O device data provides the body of the response. If data is sequential, the body of the message is sent in chunks: otherwise, the function assumes all the content is available and sends it all at once but the read is done in chunks.

Note: This function takes the ownership of data.

### void QHttpServerResponder::write(QIODevice *data, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status and HTTP headers headers. The I/O device data provides the body of the response. If data is sequential, the body of the message is sent in chunks: otherwise, the function assumes all the content is available and sends it all at once but the read is done in chunks.

Note: This function takes the ownership of data.

### void QHttpServerResponder::write(const QByteArray &data, const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status, a MIME type mimeType and a body data.

### void QHttpServerResponder::write(const QByteArray &data, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status, HTTP Headers headers and a body data.

Note: This function sets HTTP Content-Length header.

### void QHttpServerResponder::write(const QJsonDocument &document, const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Answers a request with an HTTP status code status, JSON document document and HTTP headers headers.

Note: This function sets HTTP Content-Type header as `"application/json"`.

### `[since 6.8]` void QHttpServerResponder::writeBeginChunked(const QByteArray &mimeType, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Start sending chunks of data with the mime type mimeType and and the given status code status. This call must be followed up with an arbitrary number of repeated `writeChunk` calls and and a single call to `writeEndChunked`.

This function was introduced in Qt 6.8.

See also writeChunk and writeEndChunked.

### `[since 6.8]` void QHttpServerResponder::writeBeginChunked(const QHttpHeaders &headers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Start sending chunks of data with headers and and the status code status. This call must be followed up with an arbitrary number of repeated `writeChunk` calls and and a single call to `writeEndChunked`.

This function was introduced in Qt 6.8.

See also writeChunk and writeEndChunked.

### `[since 6.8]` void QHttpServerResponder::writeBeginChunked(const QHttpHeaders &headers, QList<QHttpHeaders::WellKnownHeader> trailers, QHttpServerResponder::StatusCode status = StatusCode::Ok)

Start sending chunks of data with headers and and the given status code status. This call must be followed up with an arbitrary number of repeated `writeChunk` calls and and a single call to `writeEndChunked` with the same trailers given in trailers.

This function was introduced in Qt 6.8.

See also writeChunk and writeEndChunked.

### `[since 6.8]` void QHttpServerResponder::writeChunk(const QByteArray &data)

Write data back to the client. To be called when data is available to write. This can be called multiple times, but before calling this `writeBeginChunked` must called, and afterwards `writeEndChunked` must be called.

This function was introduced in Qt 6.8.

See also writeBeginChunked and writeEndChunked.

### `[since 6.8]` void QHttpServerResponder::writeEndChunked(const QByteArray &data)

Write data back to the client. Must be preceded by a call to `writeBeginChunked`.

This function was introduced in Qt 6.8.

See also writeBeginChunked and writeChunk.

### `[since 6.8]` void QHttpServerResponder::writeEndChunked(const QByteArray &data, const QHttpHeaders &trailers)

Write data back to the client with the trailers announced in `writeBeginChunked`.

This function was introduced in Qt 6.8.

See also writeBeginChunked and writeChunk.