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 PCaselessStringHostTag ()
 
static const PCaselessStringAllowTag ()
 
static const PCaselessStringAuthorizationTag ()
 
static const PCaselessStringContentEncodingTag ()
 
static const PCaselessStringContentLengthTag ()
 
static const PCaselessStringContentTypeTag ()
 
static const PCaselessStringDateTag ()
 
static const PCaselessStringExpiresTag ()
 
static const PCaselessStringFromTag ()
 
static const PCaselessStringIfModifiedSinceTag ()
 
static const PCaselessStringLastModifiedTag ()
 
static const PCaselessStringLocationTag ()
 
static const PCaselessStringPragmaTag ()
 
static const PCaselessStringPragmaNoCacheTag ()
 
static const PCaselessStringRefererTag ()
 
static const PCaselessStringServerTag ()
 
static const PCaselessStringUserAgentTag ()
 
static const PCaselessStringWWWAuthenticateTag ()
 
static const PCaselessStringMIMEVersionTag ()
 
static const PCaselessStringConnectionTag ()
 
static const PCaselessStringKeepAliveTag ()
 
static const PCaselessStringUpgradeTag ()
 
static const PCaselessStringWebSocketTag ()
 
static const PCaselessStringWebSocketKeyTag ()
 
static const PCaselessStringWebSocketAcceptTag ()
 
static const PCaselessStringWebSocketProtocolTag ()
 
static const PCaselessStringWebSocketVersionTag ()
 
static const PCaselessStringTransferEncodingTag ()
 
static const PCaselessStringChunkedTag ()
 
static const PCaselessStringProxyConnectionTag ()
 
static const PCaselessStringProxyAuthorizationTag ()
 
static const PCaselessStringProxyAuthenticateTag ()
 
static const PCaselessStringForwardedTag ()
 
static const PCaselessStringSetCookieTag ()
 
static const PCaselessStringCookieTag ()
 

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 &)
 
PChanneloperator= (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 PStringGetDefaultService () const
 Get the default service name or port number to use in socket connections. More...
 
PIPSocketGetSocket () 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: