# Poco::Net

# class HTTPMessage

Library: Net
Package: HTTP
Header: Poco/Net/HTTPMessage.h

## Description

The base class for HTTPRequest and HTTPResponse.

Defines the common properties of all HTTP messages. These are version, content length, content type and transfer encoding.

## Inheritance

Direct Base Classes: MessageHeader

All Base Classes: MessageHeader, NameValueCollection

Known Derived Classes: HTTPRequest, HTTPResponse, HTTPServerRequest, HTTPServerRequestImpl, HTTPServerResponse, HTTPServerResponseImpl

## Member Summary

Member Functions: getChunkedTransferEncoding, getContentLength, getContentLength64, getContentType, getKeepAlive, getTransferEncoding, getVersion, hasContentLength, operator =, setChunkedTransferEncoding, setContentLength, setContentLength64, setContentType, setKeepAlive, setTransferEncoding, setVersion

Inherited Functions: add, begin, clear, decodeRFC2047, decodeWord, empty, end, erase, find, get, getAutoDecode, getDecoded, getFieldLimit, getNameLengthLimit, getValueLengthLimit, has, hasToken, operator =, operator [], quote, read, secureClear, secureErase, set, setAutoDecode, setFieldLimit, setNameLengthLimit, setValueLengthLimit, size, splitElements, splitParameters, swap, write

## Constructors

### HTTPMessage

HTTPMessage();

Creates the HTTPMessage with version HTTP/1.0.

### HTTPMessage

HTTPMessage(
const std::string & version
);

Creates the HTTPMessage and sets the version.

### HTTPMessage

HTTPMessage(
const HTTPMessage & other
);

Copy constructor.

## Destructor

### ~HTTPMessage

virtual ~HTTPMessage();

Destroys the HTTPMessage.

## Member Functions

### getChunkedTransferEncoding

bool getChunkedTransferEncoding() const;

Returns true if the Transfer-Encoding header is set and its value is chunked.

### getContentLength

std::streamsize getContentLength() const;

Returns the content length for this message, which may be UNKNOWN_CONTENT_LENGTH if no Content-Length header is present.

### getContentLength64

Poco::Int64 getContentLength64() const;

Returns the content length for this message, which may be UNKNOWN_CONTENT_LENGTH if no Content-Length header is present.

In contrast to getContentLength(), this method always returns a 64-bit integer for content length.

### getContentType

std::string getContentType() const;

Returns the content type for this message.

If no Content-Type header is present, returns UNKNOWN_CONTENT_TYPE.

### getKeepAlive

bool getKeepAlive() const;

Returns true if

- the message has a Connection header field and its value is "Keep-Alive"
- the message is a HTTP/1.1 message and not Connection header is set

Returns false otherwise.

### getTransferEncoding

std::string getTransferEncoding() const;

Returns the transfer encoding used for this message.

Normally, this is the value of the Transfer-Encoding header field. If no such field is present, returns IDENTITY_TRANSFER_CODING.

### getVersion

const std::string & getVersion() const;

Returns the HTTP version for this message.

### hasContentLength

bool hasContentLength() const;

Returns true iff a Content-Length header is present.

### setChunkedTransferEncoding

void setChunkedTransferEncoding(
bool flag
);

If flag is true, sets the Transfer-Encoding header to chunked. Otherwise, removes the Transfer-Encoding header.

### setContentLength

void setContentLength(
std::streamsize length
);

Sets the Content-Length header.

If length is UNKNOWN_CONTENT_LENGTH, removes the Content-Length header.

### setContentLength64

void setContentLength64(
Poco::Int64 length
);

Sets the Content-Length header.

If length is UNKNOWN_CONTENT_LENGTH, removes the Content-Length header.

In contrast to setContentLength(), this method takes a 64-bit integer as content length.

### setContentType

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

Sets the content type for this message.

Specify UNKNOWN_CONTENT_TYPE to remove the Content-Type header.

### setContentType

void setContentType(
const MediaType & mediaType
);

Sets the content type for this message.

### setKeepAlive

void setKeepAlive(
bool keepAlive
);

Sets the value of the Connection header field.

The value is set to "Keep-Alive" if keepAlive is true, or to "Close" otherwise.

### setTransferEncoding

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

Sets the transfer encoding for this message.

The value should be either IDENTITY_TRANSFER_CODING or CHUNKED_TRANSFER_CODING.

### setVersion

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

Sets the HTTP version for this message.

### operator =

HTTPMessage & operator = (
const HTTPMessage & other
);

Assignment operator.

## Variables

### CHUNKED_TRANSFER_ENCODING

static const std::string CHUNKED_TRANSFER_ENCODING;

### CONNECTION

static const std::string CONNECTION;

### CONNECTION_CLOSE

static const std::string CONNECTION_CLOSE;

### CONNECTION_KEEP_ALIVE

static const std::string CONNECTION_KEEP_ALIVE;

### CONTENT_LENGTH

static const std::string CONTENT_LENGTH;

### CONTENT_TYPE

static const std::string CONTENT_TYPE;

### EMPTY

static const std::string EMPTY;

### HTTP_1_0

static const std::string HTTP_1_0;

### HTTP_1_1

static const std::string HTTP_1_1;

### IDENTITY_TRANSFER_ENCODING

static const std::string IDENTITY_TRANSFER_ENCODING;

### PROXY_CONNECTION

static const std::string PROXY_CONNECTION;

### TRANSFER_ENCODING

static const std::string TRANSFER_ENCODING;

### UNKNOWN_CONTENT_LENGTH

static const int UNKNOWN_CONTENT_LENGTH;

### UNKNOWN_CONTENT_TYPE

static const std::string UNKNOWN_CONTENT_TYPE;