# Poco::Net

# class HTTPServerResponseImpl

Library: Net
Package: HTTPServer
Header: Poco/Net/HTTPServerResponseImpl.h

## Description

This subclass of HTTPServerResponse is used for representing server-side HTTP responses.

A HTTPServerResponse is passed to the handleRequest() method of HTTPRequestHandler.

handleRequest() must set a status code and optional reason phrase, set headers as necessary, and provide a message body.

## Inheritance

Direct Base Classes: HTTPServerResponse

All Base Classes: HTTPMessage, HTTPResponse, HTTPServerResponse, MessageHeader, NameValueCollection

## Member Summary

Member Functions: attachRequest, redirect, requireAuthentication, send, sendBuffer, sendContinue, sendFile, sent

Inherited Functions: add, addCookie, begin, clear, decodeRFC2047, decodeWord, empty, end, erase, find, get, getAutoDecode, getChunkedTransferEncoding, getContentLength, getContentLength64, getContentType, getCookies, getDate, getDecoded, getFieldLimit, getKeepAlive, getNameLengthLimit, getReason, getReasonForStatus, getStatus, getTransferEncoding, getValueLengthLimit, getVersion, has, hasContentLength, hasToken, operator =, operator [], quote, read, redirect, removeCookie, replaceCookie, requireAuthentication, secureClear, secureErase, send, sendBuffer, sendContinue, sendFile, sent, set, setAutoDecode, setChunkedTransferEncoding, setContentLength, setContentLength64, setContentType, setDate, setFieldLimit, setKeepAlive, setNameLengthLimit, setReason, setStatus, setStatusAndReason, setTransferEncoding, setValueLengthLimit, setVersion, size, splitElements, splitParameters, swap, write

## Constructors

### HTTPServerResponseImpl

HTTPServerResponseImpl(
HTTPSession & session
);

Creates the HTTPServerResponseImpl.

## Destructor

### ~HTTPServerResponseImpl

~HTTPServerResponseImpl();

Destroys the HTTPServerResponseImpl.

## Member Functions

### redirect

void redirect(
const std::string & uri,
HTTPStatus status = HTTP_FOUND
);

Sets the status code, which must be one of HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302), or HTTP_SEE_OTHER (303), and sets the "Location" header field to the given URI, which according to the HTTP specification, must be absolute.

Must not be called after send() has been called.

See also: Poco::Net::HTTPServerResponse::redirect()

### requireAuthentication

void requireAuthentication(
const std::string & realm
);

Sets the status code to 401 (Unauthorized) and sets the "WWW-Authenticate" header field according to the given realm.

See also: Poco::Net::HTTPServerResponse::requireAuthentication()

### send

std::ostream & send();

Sends the response header to the client and returns an output stream for sending the response body.

The returned stream is valid until the response object is destroyed.

Must not be called after sendFile(), sendBuffer() or redirect() has been called.

See also: Poco::Net::HTTPServerResponse::send()

### sendBuffer

void sendBuffer(
const void * pBuffer,
std::size_t length
);

Sends the response header to the client, followed by the contents of the given buffer.

The Content-Length header of the response is set to length and chunked transfer encoding is disabled.

If both the HTTP message header and body (from the given buffer) fit into one single network packet, the complete response can be sent in one network packet.

Must not be called after send(), sendFile() or redirect() has been called.

See also: Poco::Net::HTTPServerResponse::sendBuffer()

### sendContinue

void sendContinue();

Sends a 100 Continue response to the client.

See also: Poco::Net::HTTPServerResponse::sendContinue()

### sendFile

void sendFile(
const std::string & path,
const std::string & mediaType
);

Sends the response header to the client, followed by the content of the given file.

Must not be called after send(), sendBuffer() or redirect() has been called.

Throws a FileNotFoundException if the file cannot be found, or an OpenFileException if the file cannot be opened.

See also: Poco::Net::HTTPServerResponse::sendFile()

### sent

bool sent() const;

Returns true if the response (header) has been sent.

See also: Poco::Net::HTTPServerResponse::sent()

### attachRequest

void attachRequest(
HTTPServerRequestImpl * pRequest
);