PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PHTTP Class Reference

A common base class for TCP/IP socket for the HyperText Transfer Protocol

version 1.0 client and server. More...

#include <http.h>

Inheritance diagram for PHTTP:
Collaboration diagram for PHTTP:

Public Types

enum  Commands {
  GET, HEAD, POST, PUT,
  DELETE, TRACE, OPTIONS, CONNECT,
  NumCommands
}
 
enum  StatusCode {
  BadResponse = 1, ContentProcessorError, UnknownTransferEncoding, Continue = 100,
  SwitchingProtocols, RequestOK = 200, Created, Accepted,
  NonAuthoritativeInformation, NoContent, ResetContent, PartialContent,
  MultipleChoices = 300, MovedPermanently, MovedTemporarily, SeeOther,
  NotModified, UseProxy, BadRequest = 400, UnAuthorised,
  PaymentRequired, Forbidden, NotFound, MethodNotAllowed,
  NoneAcceptable, ProxyAuthenticationRequired, RequestTimeout, Conflict,
  Gone, LengthRequired, UnlessTrue, InternalServerError = 500,
  NotImplemented, BadGateway, ServiceUnavailable, GatewayTimeout
}
 

Static Public Member Functions

static const PCaselessString & HostTag ()
 
static const PCaselessString & AllowTag ()
 
static const PCaselessString & AuthorizationTag ()
 
static const PCaselessString & ContentEncodingTag ()
 
static const PCaselessString & ContentLengthTag ()
 
static const PCaselessString & ContentTypeTag ()
 
static const PCaselessString & DateTag ()
 
static const PCaselessString & ExpiresTag ()
 
static const PCaselessString & FromTag ()
 
static const PCaselessString & IfModifiedSinceTag ()
 
static const PCaselessString & LastModifiedTag ()
 
static const PCaselessString & LocationTag ()
 
static const PCaselessString & PragmaTag ()
 
static const PCaselessString & PragmaNoCacheTag ()
 
static const PCaselessString & RefererTag ()
 
static const PCaselessString & ServerTag ()
 
static const PCaselessString & UserAgentTag ()
 
static const PCaselessString & WWWAuthenticateTag ()
 
static const PCaselessString & MIMEVersionTag ()
 
static const PCaselessString & ConnectionTag ()
 
static const PCaselessString & KeepAliveTag ()
 
static const PCaselessString & UpgradeTag ()
 
static const PCaselessString & WebSocketTag ()
 
static const PCaselessString & WebSocketKeyTag ()
 
static const PCaselessString & WebSocketAcceptTag ()
 
static const PCaselessString & WebSocketProtocolTag ()
 
static const PCaselessString & WebSocketVersionTag ()
 
static const PCaselessString & TransferEncodingTag ()
 
static const PCaselessString & ChunkedTag ()
 
static const PCaselessString & ProxyConnectionTag ()
 
static const PCaselessString & ProxyAuthorizationTag ()
 
static const PCaselessString & ProxyAuthenticateTag ()
 
static const PCaselessString & ForwardedTag ()
 
static const PCaselessString & SetCookieTag ()
 
static const PCaselessString & CookieTag ()
 

Protected Member Functions

 PHTTP ()
 Create a TCP/IP HTTP protocol channel. More...
 
 PHTTP (const char *defaultServiceName)
 
virtual PINDEX ParseResponse (const PString &line)
 Parse a response line string into a response code and any extra info on the line. More...
 
- Protected Member Functions inherited from PInternetProtocol
 PInternetProtocol (const char *defaultServiceName, PINDEX cmdCount, char const *const *cmdNames)
 
- Protected Member Functions inherited from PIndirectChannel
virtual PBoolean OnOpen ()
 This callback is executed when the Open() function is called with open channels. More...
 
- Protected Member Functions inherited from PChannel
 PChannel (const PChannel &)
 
PChannel & operator= (const PChannel &)
 
virtual PBoolean ConvertOSError (P_INT_PTR libcReturnValue, ErrorGroup group=LastGeneralError)
 Convert an operating system error into platform independent error. More...
 
int ReadCharWithTimeout (PTimeInterval &timeout)
 Read a character with specified timeout. More...
 
PBoolean ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start)
 
virtual int os_errno () const
 
PBoolean PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout)
 
P_INT_PTR GetOSHandleAsInt () const
 
int PXClose ()
 
 PChannel ()
 Create the channel. More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Additional Inherited Members

- Public Member Functions inherited from PInternetProtocol
virtual PBoolean Read (void *buf, PINDEX len)
 Low level read from the channel. More...
 
virtual int ReadChar ()
 Read a single 8 bit byte from the channel. More...
 
virtual PBoolean Write (const void *buf, PINDEX len)
 Low level write to the channel. More...
 
void SetReadLineTimeout (const PTimeInterval &t)
 Set the maximum timeout between characters within a line. More...
 
virtual PBoolean Connect (const PString &address, WORD port=0)
 Connect a socket to a remote host for the internet protocol. More...
 
virtual PBoolean Connect (const PString &address, const PString &service)
 
virtual PBoolean Accept (PSocket &listener)
 Accept a server socket to a remote host for the internet protocol. More...
 
const PString & GetDefaultService () const
 Get the default service name or port number to use in socket connections. More...
 
PIPSocket * GetSocket () const
 Get the eventual socket for the series of indirect channels that may be between the current protocol and the actual I/O channel. More...
 
virtual PBoolean WriteLine (const PString &line)
 Write a string to the socket channel followed by a CR/LF pair. More...
 
virtual PBoolean ReadLine (PString &line, PBoolean allowContinuation=false)
 Read a string from the socket channel up to a CR/LF pair. More...
 
virtual void UnRead (int ch)
 Put back the characters into the data stream so that the next Read() function call will return them first. More...
 
virtual void UnRead (const PString &str)
 
virtual void UnRead (const void *buffer, PINDEX len)
 
virtual bool WriteCommand (PINDEX cmdNumber, const PString &param=PString::Empty())
 Write a single line for a command. More...
 
virtual bool WriteCommand (PINDEX cmdNumber, const PString &param, const PMIMEInfo &mime)
 
virtual PBoolean ReadCommand (PINDEX &num, PString &args)
 Read a single line of a command which ends with a CR/LF pair. More...
 
virtual PBoolean ReadCommand (PINDEX &num, PString &args, PMIMEInfo &mime)
 
virtual PBoolean WriteResponse (unsigned numericCode, const PString &info)
 Write a response code followed by a text string describing the response to a command. More...
 
virtual PBoolean WriteResponse (const PString &code, const PString &info)
 
virtual PBoolean ReadResponse ()
 Read a response code followed by a text string describing the response to a command. More...
 
virtual PBoolean ReadResponse (int &code, PString &info)
 
virtual PBoolean ReadResponse (int &code, PString &info, PMIMEInfo &mime)
 
virtual int ExecuteCommand (PINDEX cmdNumber)
 Write a command to the socket, using WriteCommand() and await a response using ReadResponse(). More...
 
virtual int ExecuteCommand (PINDEX cmdNumber, const PString &param)
 
int GetLastResponseCode () const
 Return the code associated with the last response received by the socket. More...
 
PString GetLastResponseInfo () const
 Return the last response received by the socket. More...
 
- Protected Types inherited from PInternetProtocol
enum  StuffState {
  DontStuff, StuffIdle, StuffCR, StuffCRLF,
  StuffCRLFdot, StuffCRLFdotCR
}
 
- Protected Attributes inherited from PInternetProtocol
PString defaultServiceName
 
PStringArray commandNames
 
PCharArray unReadBuffer
 
PINDEX unReadCount
 
PTimeInterval readLineTimeout
 
enum PInternetProtocol::StuffState stuffingState
 
PBoolean newLineToCRLF
 
int lastResponseCode
 
PString lastResponseInfo
 
- Friends inherited from PObject

Detailed Description

A common base class for TCP/IP socket for the HyperText Transfer Protocol

version 1.0 client and server.

Member Enumeration Documentation

Enumerator
GET 
HEAD 
POST 
PUT 
DELETE 
TRACE 
OPTIONS 
CONNECT 
NumCommands 
Enumerator
BadResponse 

1 = response is malformed

ContentProcessorError 

Content Processer returned error.

UnknownTransferEncoding 

Unknown "Transfer-Encoding" extension.

Continue 

100 - Continue

SwitchingProtocols 

101 - upgrade allowed

RequestOK 

200 - request has succeeded

Created 

201 - new resource created: entity body contains URL

Accepted 

202 - request accepted, but not yet completed

NonAuthoritativeInformation 

203 - not definitive entity header

NoContent 

204 - no new information

ResetContent 

205 - contents have been reset

PartialContent 

206 - partial GET succeeded

MultipleChoices 

300 - requested resource available elsewehere

MovedPermanently 

301 - resource moved permanently: location field has new URL

MovedTemporarily 

302 - resource moved temporarily: location field has new URL

SeeOther 

303 - see other URL

NotModified 

304 - document has not been modified

UseProxy 

305 - proxy redirect

BadRequest 

400 - request malformed or not understood

UnAuthorised 

401 - request requires authentication

PaymentRequired 

402 - reserved

Forbidden 

403 - request is refused due to unsufficient authorisation

NotFound 

404 - resource cannot be found

MethodNotAllowed 

405 - not allowed on this resource

NoneAcceptable 

406 - encoding not acceptable

ProxyAuthenticationRequired 

407 - must authenticate with proxy first

RequestTimeout 

408 - server timeout on request

Conflict 

409 - resource conflict on action

Gone 

410 - resource gone away

LengthRequired 

411 - no Content-Length

UnlessTrue 

412 - no Range header for true Unless

InternalServerError 

500 - server has encountered an unexpected error

NotImplemented 

501 - server does not implement request

BadGateway 

502 - error whilst acting as gateway

ServiceUnavailable 

503 - server temporarily unable to service request

GatewayTimeout 

504 - timeout whilst talking to gateway

Constructor & Destructor Documentation

PHTTP::PHTTP ( )
protected

Create a TCP/IP HTTP protocol channel.

PHTTP::PHTTP ( const char *  defaultServiceName)
protected
Parameters
defaultServiceNameService name for the protocol.

Member Function Documentation

static const PCaselessString& PHTTP::AllowTag ( )
static
static const PCaselessString& PHTTP::AuthorizationTag ( )
static
static const PCaselessString& PHTTP::ChunkedTag ( )
static
static const PCaselessString& PHTTP::ConnectionTag ( )
static
static const PCaselessString& PHTTP::ContentEncodingTag ( )
static
static const PCaselessString& PHTTP::ContentLengthTag ( )
static
static const PCaselessString& PHTTP::ContentTypeTag ( )
inlinestatic
static const PCaselessString& PHTTP::CookieTag ( )
static
static const PCaselessString& PHTTP::DateTag ( )
static
static const PCaselessString& PHTTP::ExpiresTag ( )
static
static const PCaselessString& PHTTP::ForwardedTag ( )
static
static const PCaselessString& PHTTP::FromTag ( )
static
static const PCaselessString& PHTTP::HostTag ( )
static
static const PCaselessString& PHTTP::IfModifiedSinceTag ( )
static
static const PCaselessString& PHTTP::KeepAliveTag ( )
static
static const PCaselessString& PHTTP::LastModifiedTag ( )
static
static const PCaselessString& PHTTP::LocationTag ( )
static
static const PCaselessString& PHTTP::MIMEVersionTag ( )
static
virtual PINDEX PHTTP::ParseResponse ( const PString &  line)
protectedvirtual

Parse a response line string into a response code and any extra info on the line.

Results are placed into the member variables lastResponseCode and lastResponseInfo.

The default bahaviour looks for a space or a '-' and splits the code and info either side of that character, then returns false.

Returns
Position of continuation character in response, 0 if no continuation lines are possible.
Parameters
lineInput response line to be parsed

Reimplemented from PInternetProtocol.

static const PCaselessString& PHTTP::PragmaNoCacheTag ( )
static
static const PCaselessString& PHTTP::PragmaTag ( )
static
static const PCaselessString& PHTTP::ProxyAuthenticateTag ( )
static
static const PCaselessString& PHTTP::ProxyAuthorizationTag ( )
static
static const PCaselessString& PHTTP::ProxyConnectionTag ( )
static
static const PCaselessString& PHTTP::RefererTag ( )
static
static const PCaselessString& PHTTP::ServerTag ( )
static
static const PCaselessString& PHTTP::SetCookieTag ( )
static
static const PCaselessString& PHTTP::TransferEncodingTag ( )
static
static const PCaselessString& PHTTP::UpgradeTag ( )
static
static const PCaselessString& PHTTP::UserAgentTag ( )
static
static const PCaselessString& PHTTP::WebSocketAcceptTag ( )
static
static const PCaselessString& PHTTP::WebSocketKeyTag ( )
static
static const PCaselessString& PHTTP::WebSocketProtocolTag ( )
static
static const PCaselessString& PHTTP::WebSocketTag ( )
static
static const PCaselessString& PHTTP::WebSocketVersionTag ( )
static
static const PCaselessString& PHTTP::WWWAuthenticateTag ( )
static

The documentation for this class was generated from the following file: