Unit HTTP
From Ultibo.org
								
												
				Return to Unit Reference
Contents
Description
Ultibo HTTP Interface unit
Constants
HTTP specific constants 
 HTTP_*  HTTP_LISTENER_THREAD_NAME = 'HTTP Listener';
 | 
Thread name for HTTP listener threads | 
 HTTP_SERVER_THREAD_NAME = 'HTTP Server';
 | 
Thread name for HTTP server threads | 
 HTTP_BUFFER_SIZE = SIZE_2K;
 | 
|
HTTP character constants 
 HTTP_*  HTTP_TAB = Chr(9);
 | 
Tab | 
 HTTP_SPACE = Chr(32);
 | 
Space | 
 HTTP_DASH = '-';
 | 
- | 
 HTTP_COLON = ':';
 | 
: | 
 HTTP_LINE_END = Chr(13) + Chr(10);
 | 
CR LF | 
 HTTP_PORT_SEPARATOR = ':';
 | 
: | 
 HTTP_PATH_SEPARATOR = '/';
 | 
/ | 
 HTTP_QUERY_SEPARATOR = '?';
 | 
? | 
 HTTP_PARAM_SEPARATOR = '=';
 | 
= | 
 HTTP_PARAM_DELIMITER = '&';
 | 
& | 
 HTTP_HEADER_SEPARATOR = ':';
 | 
: | 
 HTTP_BOOKMARK_SEPARATOR = '#';
 | 
# | 
 HTTP_PROTOCOL_SEPARATOR = '://';
 | 
:// | 
HTTP date 
 HTTP_DATE_*  HTTP_DATE_FORMAT_RFC1123 = 'ddd, dd mmm yyyy hh:nn:ss "GMT"';
 | 
RFC 822, updated by RFC 1123 | 
 HTTP_DATE_FORMAT_RFC850 = 'dddd, dd-mmm-yy hh:nn:ss "GMT"';
 | 
RFC 850, obsoleted by RFC 1036 | 
 HTTP_DATE_FORMAT_ANSIC = 'ddd mmm d hh:nn:ss yyyy';
 | 
ANSI C's asctime() format | 
 HTTP_DATE_FORMAT = HTTP_DATE_FORMAT_RFC1123;
 | 
|
 
HTTP client 
 HTTP_*  HTTP_USERAGENT_STRING = 'Mozilla/5.0 (compatible; Ultibo/' + ULTIBO_RELEASE_VERSION + ')';
 | 
|
 HTTP_REQUEST_TIMEOUT = 60000;
 | 
60 seconds | 
 HTTP_KEEPALIVE_TIMEOUT = 300;
 | 
300 seconds (5 minutes) | 
 HTTP_MAX_REDIRECTS = 16;
 | 
|
 HTTP_PROXY_PORT_DEFAULT = 8080;
 | 
 
HTTP server 
 HTTP_SERVER_*  HTTP_SERVER_STRING = 'Ultibo/' + ULTIBO_RELEASE_VERSION;
 | 
 
HTTP protocol 
 HTTP_PROTOCOL_*  HTTP_PROTOCOL_NONE = 0;
 | 
|
 HTTP_PROTOCOL_HTTP = 1;
 | 
|
 HTTP_PROTOCOL_HTTPS = 2;
 | 
|
 HTTP_PROTOCOL_STRING_HTTP = 'http';
 | 
|
 HTTP_PROTOCOL_STRING_HTTPS = 'https';
 | 
|
 
HTTP method 
 HTTP_METHOD_*  HTTP_METHOD_NONE = 0;
 | 
|
 HTTP_METHOD_OPTIONS = 1;
 | 
|
 HTTP_METHOD_GET = 2;
 | 
|
 HTTP_METHOD_HEAD = 3;
 | 
|
 HTTP_METHOD_POST = 4;
 | 
|
 HTTP_METHOD_PUT = 5;
 | 
|
 HTTP_METHOD_DELETE = 6;
 | 
|
 HTTP_METHOD_TRACE = 7;
 | 
|
 HTTP_METHOD_CONNECT = 8;
 | 
|
 HTTP_METHOD_STRING_OPTIONS = 'OPTIONS';
 | 
|
 HTTP_METHOD_STRING_GET = 'GET';
 | 
|
 HTTP_METHOD_STRING_HEAD = 'HEAD';
 | 
|
 HTTP_METHOD_STRING_POST = 'POST';
 | 
|
 HTTP_METHOD_STRING_PUT = 'PUT';
 | 
|
 HTTP_METHOD_STRING_DELETE = 'DELETE';
 | 
|
 HTTP_METHOD_STRING_TRACE = 'TRACE';
 | 
|
 HTTP_METHOD_STRING_CONNECT = 'CONNECT';
 | 
|
 
HTTP version 
 HTTP_VERSION_*  HTTP_VERSION_00 = 0;
 | 
|
 HTTP_VERSION_10 = 1;
 | 
|
 HTTP_VERSION_11 = 2;
 | 
|
 HTTP_VERSION = HTTP_VERSION_11;
 | 
|
 HTTP_VERSION_STRING_10 = 'HTTP/1.0';
 | 
|
 HTTP_VERSION_STRING_11 = 'HTTP/1.1';
 | 
|
 
HTTP encoding 
 HTTP_ENCODING_*  HTTP_ENCODING_NONE = 0;
 | 
|
 HTTP_ENCODING_IDENTITY = 1;
 | 
|
 HTTP_ENCODING_CHUNKED = 2;
 | 
|
 HTTP_ENCODING_GZIP = 3;
 | 
|
 HTTP_ENCODING_COMPRESS = 4;
 | 
|
 HTTP_ENCODING_DEFLATE = 5;
 | 
|
 HTTP_ENCODING_STRING_IDENTITY = 'identity';
 | 
|
 HTTP_ENCODING_STRING_CHUNKED = 'chunked';
 | 
|
 HTTP_ENCODING_STRING_GZIP = 'gzip';
 | 
|
 HTTP_ENCODING_STRING_COMPRESS = 'compress';
 | 
|
 HTTP_ENCODING_STRING_DEFLATE = 'deflate';
 | 
|
 
HTTP general header 
 HTTP_GENERAL_HEADER_*  HTTP_GENERAL_HEADER_CACHE_CONTROL = 'Cache-Control';
 | 
|
 HTTP_GENERAL_HEADER_CONNECTION = 'Connection';
 | 
|
 HTTP_GENERAL_HEADER_DATE = 'Date';
 | 
|
 HTTP_GENERAL_HEADER_PRAGMA = 'Pragma';
 | 
|
 HTTP_GENERAL_HEADER_TRAILER = 'Trailer';
 | 
|
 HTTP_GENERAL_HEADER_TRANSFER_ENCODING = 'Transfer-Encoding';
 | 
|
 HTTP_GENERAL_HEADER_UPGRADE = 'Upgrade';
 | 
|
 HTTP_GENERAL_HEADER_VIA = 'Via';
 | 
|
 HTTP_GENERAL_HEADER_WARNING = 'Warning';
 | 
HTTP request header 
 HTTP_REQUEST_HEADER_*  HTTP_REQUEST_HEADER_ACCEPT = 'Accept';
 | 
|
 HTTP_REQUEST_HEADER_ACCEPT_CHARSET = 'Accept-Charset';
 | 
|
 HTTP_REQUEST_HEADER_ACCEPT_ENCODING = 'Accept-Encoding';
 | 
|
 HTTP_REQUEST_HEADER_ACCEPT_LANGUAGE = 'Accept-Language';
 | 
|
 HTTP_REQUEST_HEADER_AUTHORIZATION = 'Authorization';
 | 
|
 HTTP_REQUEST_HEADER_EXPECT = 'Expect';
 | 
|
 HTTP_REQUEST_HEADER_FROM = 'From';
 | 
|
 HTTP_REQUEST_HEADER_HOST = 'Host';
 | 
|
 HTTP_REQUEST_HEADER_IF_MATCH = 'If-Match';
 | 
|
 HTTP_REQUEST_HEADER_IF_MODIFIED_SINCE = 'If-Modified-Since';
 | 
|
 HTTP_REQUEST_HEADER_IF_NONE_MATCH = 'If-None-Match';
 | 
|
 HTTP_REQUEST_HEADER_IF_RANGE = 'If-Range'
 | 
|
 HTTP_REQUEST_HEADER_IF_UNMODIFIED_SINCE = 'If-Unmodified-Since';
 | 
|
 HTTP_REQUEST_HEADER_MAX_FORWARDS = 'Max-Forwards';
 | 
|
 HTTP_REQUEST_HEADER_PROXY_AUTH = 'Proxy-Authorization';
 | 
|
 HTTP_REQUEST_HEADER_RANGE = 'Range';
 | 
|
 HTTP_REQUEST_HEADER_REFERER = 'Referer';
 | 
|
 HTTP_REQUEST_HEADER_TE = 'TE';
 | 
|
 HTTP_REQUEST_HEADER_USER_AGENT = 'User-Agent';
 | 
 
HTTP response header 
 HTTP_RESPONSE_HEADER_*  HTTP_RESPONSE_HEADER_ACCEPT_RANGES = 'Accept-Ranges';
 | 
|
 HTTP_RESPONSE_HEADER_AGE = 'Age';
 | 
|
 HTTP_RESPONSE_HEADER_ETAG = 'ETag';
 | 
|
 HTTP_RESPONSE_HEADER_LOCATION = 'Location';
 | 
|
 HTTP_RESPONSE_HEADER_PROXY_AUTH = 'Proxy-Authenticate';
 | 
|
 HTTP_RESPONSE_HEADER_RETRY_AFTER = 'Retry-After';
 | 
|
 HTTP_RESPONSE_HEADER_SERVER = 'Server';
 | 
|
 HTTP_RESPONSE_HEADER_VARY = 'Vary';
 | 
|
 HTTP_RESPONSE_HEADER_WWW_AUTHENTICATE = 'WWW-Authenticate';
 | 
HTTP entity header 
 HTTP_ENTITY_HEADER_*  HTTP_ENTITY_HEADER_ALLOW = 'Allow';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_ENCODING = 'Content-Encoding';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_LENGTH = 'Content-Length';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_LOCATION = 'Content-Location';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_MD5 = 'Content-MD5';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_RANGE = 'Content-Range';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_TYPE = 'Content-Type';
 | 
|
 HTTP_ENTITY_HEADER_CONTENT_DISPOSITION = 'Content-Disposition';
 | 
|
 HTTP_ENTITY_HEADER_EXPIRES = 'Expires';
 | 
|
 HTTP_ENTITY_HEADER_LAST_MODIFIED = 'Last-Modified';
 | 
 
HTTP status 
 HTTP_STATUS_*  HTTP_STATUS_NONE = 0;
 | 
|
 HTTP_STATUS_CONTINUE = 100;
 | 
Continue | 
 HTTP_STATUS_SWITCH_PROTOCOL = 101;
 | 
Switching Protocols | 
 HTTP_STATUS_OK = 200;
 | 
OK | 
 HTTP_STATUS_CREATED  = 201;
 | 
Created | 
 HTTP_STATUS_ACCEPTED = 202;
 | 
Accepted | 
 HTTP_STATUS_NON_AUTHORITATIVE = 203;
 | 
Non-Authoritative Information | 
 HTTP_STATUS_NO_CONTENT = 204;
 | 
No Content | 
 HTTP_STATUS_RESET_CONTENT = 205;
 | 
Reset Content | 
 HTTP_STATUS_PARTIAL_CONTENT = 206;
 | 
Partial Content | 
 HTTP_STATUS_MULTIPLE_CHOICES = 300;
 | 
Multiple Choices | 
 HTTP_STATUS_MOVED_PERMANENT = 301;
 | 
Moved Permanently | 
 HTTP_STATUS_FOUND = 302;
 | 
Found | 
 HTTP_STATUS_SEE_OTHER = 303;
 | 
See Other | 
 HTTP_STATUS_NOT_MODIFIED = 304;
 | 
Not Modified | 
 HTTP_STATUS_USE_PROXY = 305;
 | 
Use Proxy | 
 HTTP_STATUS_TEMPORARY_REDIRECT = 307;
 | 
Temporary Redirect | 
 HTTP_STATUS_BAD_REQUEST = 400;
 | 
Bad Request | 
 HTTP_STATUS_UNAUTHORIZED = 401;
 | 
Unauthorized | 
 HTTP_STATUS_PAYMENT_REQUIRED = 402;
 | 
Payment Required | 
 HTTP_STATUS_FORBIDDEN = 403;
 | 
Forbidden | 
 HTTP_STATUS_NOT_FOUND = 404;
 | 
Not Found | 
 HTTP_STATUS_METHOD_NOT_ALLOWED = 405;
 | 
Method Not Allowed | 
 HTTP_STATUS_NOT_ACCEPTABLE = 406;
 | 
Not Acceptable | 
 HTTP_STATUS_PROXY_AUTH_REQUIRED = 407;
 | 
Proxy Authentication Required | 
 HTTP_STATUS_REQUEST_TIMEOUT = 408;
 | 
Request Time-out | 
 HTTP_STATUS_CONFLICT = 409;
 | 
Conflict | 
 HTTP_STATUS_GONE = 410;
 | 
Gone | 
 HTTP_STATUS_LENGTH_REQUIRED = 411;
 | 
Length Required | 
 HTTP_STATUS_PRECONDITION_FAILED = 412;
 | 
Precondition Failed | 
 HTTP_STATUS_ENTITY_TOO_LARGE = 413;
 | 
Request Entity Too Large | 
 HTTP_STATUS_URI_TOO_LARGE = 414;
 | 
Request-URI Too Large | 
 HTTP_STATUS_UNSUPPORTED_MEDIA = 415;
 | 
Unsupported Media Type | 
 HTTP_STATUS_RANGE_NOT_SATISFIED = 416;
 | 
Requested range not satisfiable | 
 HTTP_STATUS_EXPECTATION_FAILED = 417;
 | 
Expectation Failed | 
 HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;
 | 
Internal Server Error | 
 HTTP_STATUS_NOT_IMPLEMENTED = 501;
 | 
Not Implemented | 
 HTTP_STATUS_BAD_GATEWAY = 502;
 | 
Bad Gateway | 
 HTTP_STATUS_SERICE_UNAVAILABLE = 503;
 | 
Service Unavailable | 
 HTTP_STATUS_GATEWAY_TIMEOUT = 504;
 | 
Gateway Time-out | 
 HTTP_STATUS_VERSION_NOT_SUPPORTED = 505;
 | 
HTTP Version not supported | 
 HTTP_MIN_STATUS = 100;
 | 
|
 HTTP_MAX_STATUS = 599;
 | 
|
 
HTTP reason 
 HTTP_REASON_*  HTTP_REASON_100 = 'Continue';
 | 
|
 HTTP_REASON_101 = 'Switching Protocols';
 | 
|
 HTTP_REASON_200 = 'OK';
 | 
|
 HTTP_REASON_201 = 'Created';
 | 
|
 HTTP_REASON_202 = 'Accepted';
 | 
|
 HTTP_REASON_203 = 'Non-Authoritative Information';
 | 
|
 HTTP_REASON_204 = 'No Content';
 | 
|
 HTTP_REASON_205 = 'Reset Content';
 | 
|
 HTTP_REASON_206 = 'Partial Content';
 | 
|
 HTTP_REASON_300 = 'Multiple Choices';
 | 
|
 HTTP_REASON_301 = 'Moved Permanently';
 | 
|
 HTTP_REASON_302 = 'Found';
 | 
|
 HTTP_REASON_303 = 'See Other';
 | 
|
 HTTP_REASON_304 = 'Not Modified';
 | 
|
 HTTP_REASON_305 = 'Use Proxy';
 | 
|
 HTTP_REASON_307 = 'Temporary Redirect';
 | 
|
 HTTP_REASON_400 = 'Bad Request';
 | 
|
 HTTP_REASON_401 = 'Unauthorized';
 | 
|
 HTTP_REASON_402 = 'Payment Required';
 | 
|
 HTTP_REASON_403 = 'Forbidden';
 | 
|
 HTTP_REASON_404 = 'Not Found';
 | 
|
 HTTP_REASON_405 = 'Method Not Allowed';
 | 
|
 HTTP_REASON_406 = 'Not Acceptable';
 | 
|
 HTTP_REASON_407 = 'Proxy Authentication Required';
 | 
|
 HTTP_REASON_408 = 'Request Time-out';
 | 
|
 HTTP_REASON_409 = 'Conflict';
 | 
|
 HTTP_REASON_410 = 'Gone';
 | 
|
 HTTP_REASON_411 = 'Length Required';
 | 
|
 HTTP_REASON_412 = 'Precondition Failed';
 | 
|
 HTTP_REASON_413 = 'Request Entity Too Large';
 | 
|
 HTTP_REASON_414 = 'Request-URI Too Large';
 | 
|
 HTTP_REASON_415 = 'Unsupported Media Type';
 | 
|
 HTTP_REASON_416 = 'Requested range not satisfiable';
 | 
|
 HTTP_REASON_417 = 'Expectation Failed';
 | 
|
 HTTP_REASON_500 = 'Internal Server Error';
 | 
|
 HTTP_REASON_501 = 'Not Implemented';
 | 
|
 HTTP_REASON_502 = 'Bad Gateway';
 | 
|
 HTTP_REASON_503 = 'Service Unavailable';
 | 
|
 HTTP_REASON_504 = 'Gateway Time-out';
 | 
|
 HTTP_REASON_505 = 'HTTP Version not supported ';
 | 
HTTP content type 
 HTTP_CONTENT_*  HTTP_CONTENT_TEXT_HTML = 'text/html';
 | 
HTTP cache control 
 HTTP_CACHE_*  HTTP_CACHE_NO_CACHE = 'no-cache';
 | 
 
HTTP connection 
 HTTP_CONNECTION_*  HTTP_CONNECTION_CLOSE = 'close';
 | 
|
 HTTP_CONNECTION_KEEPALIVE = 'keep-alive';
 | 
 
HTTP request flag 
 HTTP_REQUEST_FLAG_*  HTTP_REQUEST_FLAG_NONE = $00000000;
 | 
|
 HTTP_REQUEST_FLAG_CONTENT_RECEIVED = $00000001;
 | 
Server | 
 HTTP_REQUEST_FLAG_LINE_SENT = $00000002;
 | 
Client | 
 HTTP_REQUEST_FLAG_HEADERS_SENT = $00000004;
 | 
Client | 
 HTTP_REQUEST_FLAG_CONTENT_SENT = $00000008;
 | 
Client | 
 
HTTP response flag 
 HTTP_RESPONSE_FLAG_*  HTTP_RESPONSE_FLAG_NONE = $00000000;
 | 
|
 HTTP_RESPONSE_FLAG_STATUS_SENT = $00000001;
 | 
Server | 
 HTTP_RESPONSE_FLAG_HEADERS_SENT = $00000002;
 | 
Server | 
 HTTP_RESPONSE_FLAG_CONTENT_SENT = $00000004;
 | 
Server | 
 HTTP_RESPONSE_FLAG_CONNECTION_CLOSE = $00000008;
 | 
Server/Client | 
 HTTP_RESPONSE_FLAG_NO_CACHE = $00000010;
 | 
Server/Client | 
 HTTP_RESPONSE_FLAG_CONTENT_RECEIVED = $00000020;
 | 
Client | 
 
HTTP client state 
 HTTP_CLIENT_STATE_*  HTTP_CLIENT_STATE_NONE = 0;
 | 
|
 HTTP_CLIENT_STATE_REQUEST = 1;
 | 
|
 HTTP_CLIENT_STATE_REDIRECT = 2;
 | 
|
 HTTP_CLIENT_STATE_SUCCESS = 3;
 | 
|
 HTTP_CLIENT_STATE_FAILURE = 4;
 | 
 
HTTP host flag 
 HTTP_HOST_FLAG_*  HTTP_HOST_FLAG_NONE = $00000000;
 | 
|
 HTTP_HOST_FLAG_DEFAULT = $00000001;
 | 
|
 HTTP_HOST_FLAG_DOMAIN = $00000002;
 | 
 
HTTP CGI flag 
 HTTP_CGI_FLAG_*  HTTP_CGI_FLAG_NONE = $00000000;
 | 
|
 HTTP_CGI_FLAG_FOLDER = $00000001;
 | 
|
 HTTP_CGI_FLAG_SUBTREE = $00000002;
 | 
|
 HTTP_CGI_FLAG_EXTENSION = $00000004;
 | 
 
HTTP error flag 
 HTTP_ERROR_FLAG_*  HTTP_ERROR_FLAG_NONE = $00000000;
 | 
|
 HTTP_ERROR_FLAG_DEFAULT = $00000001;
 | 
  
HTTP module flag 
 HTTP_MODULE_FLAG_*  HTTP_MODULE_FLAG_NONE = $00000000;
 | 
 
HTTP document flag 
 HTTP_DOCUMENT_FLAG_*  HTTP_DOCUMENT_FLAG_NONE = $00000000;
 | 
|
 HTTP_DOCUMENT_FLAG_DEFAULT = $00000001;
 | 
|
 HTTP_DOCUMENT_FLAG_FOLDER = $00000002;
 | 
|
 HTTP_DOCUMENT_FLAG_SUBTREE = $00000004;
 | 
|
 HTTP_DOCUMENT_FLAG_EXTENSION = $00000008;
 | 
 
HTTP mime type 
 HTTP_MIME_TYPE_* | See: Apache mime.types file | |
 HTTP_MIME_TYPE_MAX = 29;
 | 
|
HTTP_MIME_TYPES:array[0..HTTP_MIME_TYPE_MAX,0..1] of String = (
 | |
 ('avi','video/x-msvideo'),
 | 
|
 ('bat','application/x-msdownload'),
 | 
|
 ('bmp','image/bmp'),
 | 
|
 ('com','application/x-msdownload'),
 | 
|
 ('conf','text/plain'),
 | 
|
 ('css','text/css'),
 | 
|
 ('dll','application/x-msdownload'),
 | 
|
 ('doc','application/msword'),
 | 
|
 ('dot','application/msword'),
 | 
|
 ('exe','application/x-msdownload'),
 | 
|
 ('gif','image/gif'),
 | 
|
 ('html','text/html'),
 | 
|
 ('htm','text/html'),
 | 
|
 ('iso','application/octet-stream'),
 | 
|
 ('jpeg','image/jpeg'),
 | 
|
 ('js','application/javascript'),
 | 
|
 ('jpg','image/jpeg'),
 | 
|
 ('pdf','application/pdf'),
 | 
|
 ('png','image/png'),
 | 
|
 ('txt','text/plain'),
 | 
|
 ('text','text/plain'),
 | 
|
 ('log','text/plain'),
 | 
|
 ('mov','video/quicktime'),
 | 
|
 ('mp3','audio/mpeg'),
 | 
|
 ('mp4','video/mp4'),
 | 
|
 ('msi','application/x-msdownload'),
 | 
|
 ('qt','video/quicktime'),
 | 
|
 ('tar','application/x-tar'),
 | 
|
 ('wmv','video/x-ms-wmv'),
 | 
|
 ('zip','application/zip') );
 | 
|
HTTP_MIME_TYPE_DEFAULT = 'application/octet-stream';
 | |
 
HTTP logging 
 HTTP_LOG_LEVEL_*  HTTP_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
 | 
HTTP debugging messages | 
 HTTP_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
 | 
HTTP informational messages | 
 HTTP_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
 | 
HTTP warning messages | 
 HTTP_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
 | 
HTTP error messages | 
 HTTP_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
 | 
No HTTP messages | 
Type definitions
HTTP reserved chars
 THTTPReservedChars = set of AnsiChar;
 | 
HTTP redirect event
 THTTPRedirectEvent = function(AClient:THTTPClient; const AURL:String; var ALocation:String):Boolean of Object;
 | 
HTTP password event
 THTTPPasswordEvent = function(AClient:THTTPClient; var AUsername,APassword:String):Boolean of Object;
 | 
HTTP host event
 THTTPHostEvent = function(AHost:THTTPHost; ARequest:THTTPServerRequest; AResponse:THTTPServerResponse):Boolean of Object;
 | 
HTTP error event
 THTTPErrorEvent = function(AHost:THTTPHost; AError:THTTPError; ARequest:THTTPServerRequest; AResponse:THTTPServerResponse):Boolean of Object;
 | 
HTTP module event
 THTTPModuleEvent = function(AHost:THTTPHost; AModule:THTTPModule; ARequest:THTTPServerRequest; AResponse:THTTPServerResponse):Boolean of Object;
 | 
HTTP document event
 THTTPDocumentEvent = function(AHost:THTTPHost; ADocument:THTTPDocument; ARequest:THTTPServerRequest; AResponse:THTTPServerResponse):Boolean of Object;
 | 
 
Class definitions
HTTP helper classes
 THTTPBuffer = class(TObject)
 | 
HTTP common classes
 THTTPParam = class(TListObject)
 | 
 THTTPParams = class(TObject)
 | 
 THTTPHeader = class(TListObject)
 | 
 THTTPHeaders = class(TObject)
 | 
HTTP client classes
 THTTPClientRequest = class(TObject)
 | 
 THTTPClientResponse = class(TObject)
 | 
 THTTPClient = class(TWinsock2TCPClient)
 | 
HTTP server classes
 THTTPServerRequest = class(TObject)
 | 
 THTTPServerResponse = class(TObject)
 | 
 THTTPHost = class(TListObject)
 | 
 THTTPError = class(TListObject)
 | 
 THTTPAlias = class(TListObject)
 | 
 THTTPModule = class(TListObject)
 | 
 THTTPDocument = class(TListObject)
 | 
 THTTPMimeType = class(TListObject)
 | 
 THTTPRedirect = class(THTTPDocument)
 | 
 THTTPFolder = class(THTTPDocument)
 | 
 THTTPFile = class(THTTPDocument)
 | 
 THTTPListener = class(TWinsock2TCPListener)
 | 
Public variables
HTTP logging
 HTTP_DEFAULT_LOG_LEVEL:LongWord = HTTP_LOG_LEVEL_DEBUG;
 | 
Minimum level for HTTP messages. Only messages with level greater than or equal to this will be printed. | 
 HTTP_LOG_ENABLED:Boolean;
 | 
Function declarations
Initialization functions
procedure HTTPInit;
Description: To be documented
| Note | None documented | 
|---|
HTTP helper functions
function HTTPEncode(const AValue:String; AReserved:THTTPReservedChars):String;
Description: To be documented
| Note | None documented | 
|---|
function HTTPDecode(const AValue:String; AQuery:Boolean = False):String;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseURI(const AURI:String; var AProtocol,AHost,APort,APath,AQuery:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildURI(const AProtocol,AHost,APort,APath,AQuery:String; var AURI:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseHost(const AHost:String; var AName,APort:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildHost(const AName,APort:String; var AHost:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseParam(const AParam:String; var AName,AValue:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildParam(const AName,AValue:String; var AParam:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseQuery(const AQuery:String; AParams:THTTPParams):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildQuery(AParams:THTTPParams; var AQuery:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseHeader(const AHeader:String; var AName,AValue:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildHeader(const AName,AValue:String; var AHeader:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPPathExtractName(const ASource:String; var AName:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPPathExtractDir(const ASource:String; var APath:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPPathExtractPath(const ASource:String; var APath:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPPathExtractExtension(const ASource:String; var AExtension:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseRequestLine(const ARequest:String; var AMethod:LongWord; var AURL:String; var AVersion:LongWord):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildRequestLine(AMethod:LongWord; const AURL:String; AVersion:LongWord; var ARequest:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPParseResponseLine(const AResponse:String; var AVersion,AStatus:LongWord; var AReason:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function HTTPBuildResponseLine(AVersion,AStatus:LongWord; const AReason:String; var AResponse:String):Boolean;
Description: To be documented
| Note | None documented | 
|---|
function FileTimeToHTTPDate(const AFileTime:TFileTime):String;
Description: To be documented
| Note | None documented | 
|---|
function HTTPDateToFileTime(const AHTTPDate:String):TFileTime;
Description: To be documented
| Note | None documented | 
|---|
function DateTimeToHTTPDate(const ADateTime:TDateTime):String;
Description: To be documented
| Note | None documented | 
|---|
function HTTPDateToDateTime(const AHTTPDate:String):TDateTime;
Description: To be documented
| Note | None documented | 
|---|
function StringToHTTPProtocol(const AProtocol:String):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function HTTPProtocolToString(AProtocol:LongWord):String;
Description: To be documented
| Note | None documented | 
|---|
function StringToHTTPMethod(const AMethod:String):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function HTTPMethodToString(AMethod:LongWord):String;
Description: To be documented
| Note | None documented | 
|---|
function StringToHTTPVersion(const AVersion:String):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function HTTPVersionToString(AVersion:LongWord):String;
Description: To be documented
| Note | None documented | 
|---|
function StringToHTTPEncoding(const AEncoding:String):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function HTTPEncodingToString(AEncoding:LongWord):String;
Description: To be documented
| Note | None documented | 
|---|
function StringToHTTPStatus(const AStatus:String):LongWord;
Description: To be documented
| Note | None documented | 
|---|
function HTTPStatusToString(AStatus:LongWord):String;
Description: To be documented
| Note | None documented | 
|---|
procedure HTTPLog(Level:LongWord;const AText:String);
Description: To be documented
| Note | None documented | 
|---|
procedure HTTPLogInfo(const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure HTTPLogWarn(const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure HTTPLogError(const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
procedure HTTPLogDebug(const AText:String); inline;
Description: To be documented
| Note | None documented | 
|---|
Return to Unit Reference