class Poco::Net::HTTPResponse

Overview

This class encapsulates an HTTP response message. More…

#include <HTTPResponse.h>

class HTTPResponse: public Poco::Net::HTTPMessage
{
public:
    // enums

    enum HTTPStatus;

    // fields

    static const std::string HTTP_REASON_CONTINUE;
    static const std::string HTTP_REASON_SWITCHING_PROTOCOLS;
    static const std::string HTTP_REASON_OK;
    static const std::string HTTP_REASON_CREATED;
    static const std::string HTTP_REASON_ACCEPTED;
    static const std::string HTTP_REASON_NONAUTHORITATIVE;
    static const std::string HTTP_REASON_NO_CONTENT;
    static const std::string HTTP_REASON_RESET_CONTENT;
    static const std::string HTTP_REASON_PARTIAL_CONTENT;
    static const std::string HTTP_REASON_MULTIPLE_CHOICES;
    static const std::string HTTP_REASON_MOVED_PERMANENTLY;
    static const std::string HTTP_REASON_FOUND;
    static const std::string HTTP_REASON_SEE_OTHER;
    static const std::string HTTP_REASON_NOT_MODIFIED;
    static const std::string HTTP_REASON_USEPROXY;
    static const std::string HTTP_REASON_TEMPORARY_REDIRECT;
    static const std::string HTTP_REASON_BAD_REQUEST;
    static const std::string HTTP_REASON_UNAUTHORIZED;
    static const std::string HTTP_REASON_PAYMENT_REQUIRED;
    static const std::string HTTP_REASON_FORBIDDEN;
    static const std::string HTTP_REASON_NOT_FOUND;
    static const std::string HTTP_REASON_METHOD_NOT_ALLOWED;
    static const std::string HTTP_REASON_NOT_ACCEPTABLE;
    static const std::string HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED;
    static const std::string HTTP_REASON_REQUEST_TIMEOUT;
    static const std::string HTTP_REASON_CONFLICT;
    static const std::string HTTP_REASON_GONE;
    static const std::string HTTP_REASON_LENGTH_REQUIRED;
    static const std::string HTTP_REASON_PRECONDITION_FAILED;
    static const std::string HTTP_REASON_REQUESTENTITYTOOLARGE;
    static const std::string HTTP_REASON_REQUESTURITOOLONG;
    static const std::string HTTP_REASON_UNSUPPORTEDMEDIATYPE;
    static const std::string HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE;
    static const std::string HTTP_REASON_EXPECTATION_FAILED;
    static const std::string HTTP_REASON_INTERNAL_SERVER_ERROR;
    static const std::string HTTP_REASON_NOT_IMPLEMENTED;
    static const std::string HTTP_REASON_BAD_GATEWAY;
    static const std::string HTTP_REASON_SERVICE_UNAVAILABLE;
    static const std::string HTTP_REASON_GATEWAY_TIMEOUT;
    static const std::string HTTP_REASON_VERSION_NOT_SUPPORTED;
    static const std::string HTTP_REASON_UNKNOWN;
    static const std::string DATE;
    static const std::string SET_COOKIE;

    // construction

    HTTPResponse();

    HTTPResponse(
        HTTPStatus status,
        const std::string& reason
        );

    HTTPResponse(
        const std::string& version,
        HTTPStatus status,
        const std::string& reason
        );

    HTTPResponse(HTTPStatus status);

    HTTPResponse(
        const std::string& version,
        HTTPStatus status
        );

    // methods

    void
    setStatus(HTTPStatus status);

    HTTPStatus
    getStatus() const;

    void
    setStatus(const std::string& status);

    void
    setReason(const std::string& reason);

    const std::string&
    getReason() const;

    void
    setStatusAndReason(
        HTTPStatus status,
        const std::string& reason
        );

    void
    setStatusAndReason(HTTPStatus status);

    void
    setDate(const Poco::Timestamp& dateTime);

    Poco::Timestamp
    getDate() const;

    void
    addCookie(const HTTPCookie& cookie);

    void
    getCookies(std::vector<HTTPCookie>& cookies) const;

    virtual
    void
    write(std::ostream& ostr) const;

    virtual
    void
    read(std::istream& istr);

    static
    const std::string&
    getReasonForStatus(HTTPStatus status);
};

// direct descendants

class HTTPServerResponse;

Inherited Members

public:
    // typedefs

    typedef Poco::ListMap<std::string, std::string> HeaderMap;
    typedef HeaderMap::Iterator Iterator;
    typedef HeaderMap::ConstIterator ConstIterator;

    // fields

    static const std::string HTTP_1_0;
    static const std::string HTTP_1_1;
    static const std::string IDENTITY_TRANSFER_ENCODING;
    static const std::string CHUNKED_TRANSFER_ENCODING;
    static const int UNKNOWN_CONTENT_LENGTH;
    static const std::string UNKNOWN_CONTENT_TYPE;
    static const std::string CONTENT_LENGTH;
    static const std::string CONTENT_TYPE;
    static const std::string TRANSFER_ENCODING;
    static const std::string CONNECTION;
    static const std::string CONNECTION_KEEP_ALIVE;
    static const std::string CONNECTION_CLOSE;
    static const std::string EMPTY;

    // methods

    NameValueCollection&
    operator=(const NameValueCollection& nvc);

    void
    swap(NameValueCollection& nvc);

    const std::string&
    operator[](const std::string& name) const;

    void
    set(
        const std::string& name,
        const std::string& value
        );

    void
    add(
        const std::string& name,
        const std::string& value
        );

    const std::string&
    get(const std::string& name) const;

    const std::string&
    get(
        const std::string& name,
        const std::string& defaultValue
        ) const;

    bool
    has(const std::string& name) const;

    ConstIterator
    find(const std::string& name) const;

    ConstIterator
    begin() const;

    ConstIterator
    end() const;

    bool
    empty() const;

    std::size_t
    size() const;

    void
    erase(const std::string& name);

    void
    clear();

    MessageHeader&
    operator=(const MessageHeader& messageHeader);

    virtual
    void
    write(std::ostream& ostr) const;

    virtual
    void
    read(std::istream& istr);

    int
    getFieldLimit() const;

    void
    setFieldLimit(int limit);

    bool
    hasToken(
        const std::string& fieldName,
        const std::string& token
        ) const;

    static
    void
    splitElements(
        const std::string& s,
        std::vector<std::string>& elements,
        bool ignoreEmpty = true
        );

    static
    void
    splitParameters(
        const std::string& s,
        std::string& value,
        NameValueCollection& parameters
        );

    static
    void
    splitParameters(
        const std::string::const_iterator& begin,
        const std::string::const_iterator& end,
        NameValueCollection& parameters
        );

    static
    void
    quote(
        const std::string& value,
        std::string& result,
        bool allowSpace = false
        );

    void
    setVersion(const std::string& version);

    const std::string&
    getVersion() const;

    void
    setContentLength(std::streamsize length);

    std::streamsize
    getContentLength() const;

    bool
    hasContentLength() const;

    void
    setTransferEncoding(const std::string& transferEncoding);

    const std::string&
    getTransferEncoding() const;

    void
    setChunkedTransferEncoding(bool flag);

    bool
    getChunkedTransferEncoding() const;

    void
    setContentType(const std::string& mediaType);

    void
    setContentType(const MediaType& mediaType);

    const std::string&
    getContentType() const;

    void
    setKeepAlive(bool keepAlive);

    bool
    getKeepAlive() const;

Detailed Documentation

This class encapsulates an HTTP response message.

In addition to the properties common to all HTTP messages, a HTTP response has status code and a reason phrase.

Construction

HTTPResponse()

Creates the HTTPResponse with OK status.

HTTPResponse(
    HTTPStatus status,
    const std::string& reason
    )

Creates the HTTPResponse with the given status and reason phrase.

HTTPResponse(
    const std::string& version,
    HTTPStatus status,
    const std::string& reason
    )

Creates the HTTPResponse with the given version, status and reason phrase.

HTTPResponse(HTTPStatus status)

Creates the HTTPResponse with the given status an an appropriate reason phrase.

HTTPResponse(
    const std::string& version,
    HTTPStatus status
    )

Creates the HTTPResponse with the given version, status an an appropriate reason phrase.

Methods

void
setStatus(HTTPStatus status)

Sets the HTTP status code.

Does not change the reason phrase.

HTTPStatus
getStatus() const

Returns the HTTP status code.

void
setStatus(const std::string& status)

Sets the HTTP status code.

The string must contain a valid HTTP numerical status code.

void
setReason(const std::string& reason)

Sets the HTTP reason phrase.

const std::string&
getReason() const

Returns the HTTP reason phrase.

void
setStatusAndReason(
    HTTPStatus status,
    const std::string& reason
    )

Sets the HTTP status code and reason phrase.

void
setStatusAndReason(HTTPStatus status)

Sets the HTTP status code and reason phrase.

The reason phrase is set according to the status code.

void
setDate(const Poco::Timestamp& dateTime)

Sets the Date header to the given date/time value.

Poco::Timestamp
getDate() const

Returns the value of the Date header.

void
addCookie(const HTTPCookie& cookie)

Adds the cookie to the response by adding a Set-Cookie header.

void
getCookies(std::vector<HTTPCookie>& cookies) const

Returns a vector with all the cookies set in the response header.

May throw an exception in case of a malformed Set-Cookie header.

virtual
void
write(std::ostream& ostr) const

Writes the HTTP response to the given output stream.

virtual
void
read(std::istream& istr)

Reads the HTTP response from the given input stream.

100 Continue responses are ignored.

static
const std::string&
getReasonForStatus(HTTPStatus status)

Returns an appropriate reason phrase for the given status code.