unit WinInetUnit; interface uses Windows; const INTERNET_INVALID_PORT_NUMBER = 0; // Use the protocol-specific default INTERNET_DEFAULT_FTP_PORT = 21; // Default for FTP servers INTERNET_DEFAULT_GOPHER_PORT = 70; // " " gopher " INTERNET_DEFAULT_HTTP_PORT = 80; // " " HTTP " INTERNET_DEFAULT_HTTPS_PORT = 443; // " " HTTPS " INTERNET_DEFAULT_SOCKS_PORT = 1080; // Default for SOCKS firewall servers. MAX_CACHE_ENTRY_INFO_SIZE = 4096; INTERNET_MAX_HOST_NAME_LENGTH = 256; INTERNET_MAX_USER_NAME_LENGTH = 128; INTERNET_MAX_PASSWORD_LENGTH = 128; INTERNET_MAX_PORT_NUMBER_LENGTH = 5; // INTERNET_PORT is unsigned short INTERNET_MAX_PORT_NUMBER_VALUE = 65535; // Maximum unsigned short value INTERNET_MAX_PATH_LENGTH = 2048; INTERNET_MAX_SCHEME_LENGTH = 32; // Longest protocol name length INTERNET_MAX_PROTOCOL_NAME = 'gopher'; // Longest protocol name INTERNET_MAX_URL_LENGTH = ((SizeOf(INTERNET_MAX_PROTOCOL_NAME) - 1) + SizeOf('://') + INTERNET_MAX_PATH_LENGTH); // Values returned by InternetQueryOption with INTERNET_OPTION_KEEP_CONNECTION: INTERNET_KEEP_ALIVE_UNKNOWN = -1; INTERNET_KEEP_ALIVE_ENABLED = 1; INTERNET_KEEP_ALIVE_DISABLED = 0; // Flags returned by InternetQueryOption with INTERNET_OPTION_REQUEST_FLAGS INTERNET_REQFLAG_FROM_CACHE = $00000001; INTERNET_REQFLAG_ASYNC = $00000002; INTERNET_REQFLAG_VIA_PROXY = $00000004; // Request was made via a proxy INTERNET_REQFLAG_NO_HEADERS = $00000008; // Orginal response contained no headers INTERNET_REQFLAG_PASSIVE = $00000010; // FTP: passive-mode connection INTERNET_REQFLAG_CACHE_WRITE_DISABLED = $00000040;// HTTPS: this request not cacheable // Flags common to open functions (not InternetOpen): INTERNET_FLAG_RELOAD = $80000000; // Retrieve the original item // Flags for InternetOpenUrl: INTERNET_FLAG_RAW_DATA = $40000000; // Receive the item as raw data INTERNET_FLAG_EXISTING_CONNECT = $20000000; // Do not create new connection object // Flags for InternetOpen: INTERNET_FLAG_ASYNC = $10000000; // This request is asynchronous (where supported) // Protocol-specific flags: INTERNET_FLAG_PASSIVE = $08000000; // Used for FTP connections // Additional cache flags INTERNET_FLAG_NO_CACHE_WRITE = $04000000; // Don't write this item to the cache INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE; INTERNET_FLAG_MAKE_PERSISTENT = $02000000; // Make this item persistent in cache INTERNET_FLAG_FROM_CACHE = $01000000; // Use offline semantics INTERNET_FLAG_OFFLINE = $01000000; // Use offline semantics // Additional flags INTERNET_FLAG_SECURE = $00800000; // Use PCT/SSL if applicable (HTTP) INTERNET_FLAG_KEEP_CONNECTION = $00400000; // Use keep-alive semantics INTERNET_FLAG_NO_AUTO_REDIRECT = $00200000; // Don't handle redirections automatically INTERNET_FLAG_READ_PREFETCH = $00100000; // Do background read prefetch INTERNET_FLAG_NO_COOKIES = $00080000; // No automatic cookie handling INTERNET_FLAG_NO_AUTH = $00040000; // No automatic authentication handling INTERNET_FLAG_CACHE_IF_NET_FAIL = $00010000; // Return cache file if net request fails // Security Ignore Flags, Allow HttpOpenRequest to override // Secure Channel (SSL/PCT) failures of the following types. INTERNET_FLAG_IGNORE_CERT_CN_INVALID = $00001000; // Bad common name in X509 Cert. INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = $00002000; // Expired X509 Cert. INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = $00004000; // Ex: http:// to https:// INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = $00008000; // Ex: https:// to http:// // // More caching flags // INTERNET_FLAG_RESYNCHRONIZE = $00000800; // Asking WinInet to update an item if it is newer INTERNET_FLAG_HYPERLINK = $00000400; // Asking WinInet to do hyperlinking semantic which works right for scripts INTERNET_FLAG_NO_UI = $00000200; // No cookie popup INTERNET_FLAG_PRAGMA_NOCACHE = $00000100; // Asking WinInet to add "pragma: no-cache" INTERNET_FLAG_CACHE_ASYNC = $00000080; // OK to perform lazy cache-write INTERNET_FLAG_FORMS_SUBMIT = $00000040; // This is a forms submit INTERNET_FLAG_NEED_FILE = $00000010; // Need a file for this request INTERNET_FLAG_MUST_CACHE_REQUEST = INTERNET_FLAG_NEED_FILE; // Flags for FTP FTP_TRANSFER_TYPE_UNKNOWN = $00000000; FTP_TRANSFER_TYPE_ASCII = $00000001; FTP_TRANSFER_TYPE_BINARY = $00000002; FTP_TRANSFER_TYPE_MASK = FTP_TRANSFER_TYPE_ASCII or FTP_TRANSFER_TYPE_BINARY; INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII; INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY; // Flags field masks SECURITY_INTERNET_MASK = INTERNET_FLAG_IGNORE_CERT_CN_INVALID or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID or INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS or INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; SECURITY_SET_MASK = SECURITY_INTERNET_MASK; INTERNET_FLAGS_MASK = INTERNET_FLAG_RELOAD or INTERNET_FLAG_RAW_DATA or INTERNET_FLAG_EXISTING_CONNECT or INTERNET_FLAG_ASYNC or INTERNET_FLAG_PASSIVE or INTERNET_FLAG_NO_CACHE_WRITE or INTERNET_FLAG_MAKE_PERSISTENT or INTERNET_FLAG_FROM_CACHE or INTERNET_FLAG_SECURE or INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_NO_AUTO_REDIRECT or INTERNET_FLAG_READ_PREFETCH or INTERNET_FLAG_NO_COOKIES or INTERNET_FLAG_NO_AUTH or INTERNET_FLAG_CACHE_IF_NET_FAIL or SECURITY_INTERNET_MASK or INTERNET_FLAG_RESYNCHRONIZE or INTERNET_FLAG_HYPERLINK or INTERNET_FLAG_NO_UI or INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_CACHE_ASYNC or INTERNET_FLAG_FORMS_SUBMIT or INTERNET_FLAG_NEED_FILE or INTERNET_FLAG_TRANSFER_BINARY or INTERNET_FLAG_TRANSFER_ASCII; INTERNET_ERROR_MASK_INSERT_CDROM = $1; INTERNET_OPTIONS_MASK = not INTERNET_FLAGS_MASK; // // Common per-API flags (new APIs) // WININET_API_FLAG_ASYNC = $00000001; // Force async operation WININET_API_FLAG_SYNC = $00000004; // Force sync operation WININET_API_FLAG_USE_CONTEXT = $00000008; // Use value supplied in dwContext (even if 0) // INTERNET_NO_CALLBACK - if this value is presented as the dwContext parameter // then no call-backs will be made for that API INTERNET_NO_CALLBACK = 0; // URL Scheme INTERNET_SCHEME_PARTIAL = -2; INTERNET_SCHEME_UNKNOWN = -1; INTERNET_SCHEME_DEFAULT = 0; INTERNET_SCHEME_FTP = 1; INTERNET_SCHEME_GOPHER = 2; INTERNET_SCHEME_HTTP = 3; INTERNET_SCHEME_HTTPS = 4; INTERNET_SCHEME_FILE = 5; INTERNET_SCHEME_NEWS = 6; INTERNET_SCHEME_MAILTO = 7; INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP; INTERNET_SCHEME_LAST = INTERNET_SCHEME_MAILTO; // INTERNET_PREFETCH_STATUS - dwStatus values INTERNET_PREFETCH_PROGRESS = 0; INTERNET_PREFETCH_COMPLETE = 1; INTERNET_PREFETCH_ABORTED = 2; // Flags for INTERNET_CONNECTED_INFO dwFlags // ISO_FORCE_DISCONNECTED - if set when putting WinInet into disconnected mode, // all outstanding requests will be aborted with a cancelled error ISO_FORCE_DISCONNECTED = $00000001; // Flags for InternetCrackUrl and InternetCreateUrl ICU_ESCAPE = $80000000; // (Un)escape URL characters ICU_USERNAME = $40000000; // Use internal username & password // Flags for InternetCanonicalizeUrl and InternetCombineUrl ICU_NO_ENCODE = $20000000; // Don't convert unsafe characters to escape sequence ICU_DECODE = $10000000; // Convert escape sequences to characters ICU_NO_META = $08000000; // Don't convert .. etc. meta path sequences ICU_ENCODE_SPACES_ONLY = $04000000; // Encode spaces only ICU_BROWSER_MODE = $02000000; // Special encode/decode rules for browser // Access types for InternetOpen INTERNET_OPEN_TYPE_PRECONFIG = 0; // Use registry configuration INTERNET_OPEN_TYPE_DIRECT = 1; // Direct to net INTERNET_OPEN_TYPE_PROXY = 3; // Via named proxy INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4; // Prevent using java/script/INS // Old names for access types PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG; LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT; GATEWAY_INTERNET_ACCESS = 2; // Internet via gateway CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY; // Service types for InternetConnect INTERNET_SERVICE_URL = 0; INTERNET_SERVICE_FTP = 1; INTERNET_SERVICE_GOPHER = 2; INTERNET_SERVICE_HTTP = 3; // Flags for InternetReadFileEx() IRF_ASYNC = WININET_API_FLAG_ASYNC; IRF_SYNC = WININET_API_FLAG_SYNC; IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT; IRF_NO_WAIT = $00000008; // Flags for InternetSetOptionEx() ISO_GLOBAL = $00000001; // Modify option globally ISO_REGISTRY = $00000002; // Write option to registry (where applicable) ISO_VALID_FLAGS = ISO_GLOBAL or ISO_REGISTRY; // Options manifests for Internet(Query or Set)Option INTERNET_OPTION_CALLBACK = 1; INTERNET_OPTION_CONNECT_TIMEOUT = 2; INTERNET_OPTION_CONNECT_RETRIES = 3; INTERNET_OPTION_CONNECT_BACKOFF = 4; INTERNET_OPTION_SEND_TIMEOUT = 5; INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT; INTERNET_OPTION_RECEIVE_TIMEOUT = 6; INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT; INTERNET_OPTION_DATA_SEND_TIMEOUT = 7; INTERNET_OPTION_DATA_RECEIVE_TIMEOUT = 8; INTERNET_OPTION_HANDLE_TYPE = 9; INTERNET_OPTION_READ_BUFFER_SIZE = 12; INTERNET_OPTION_WRITE_BUFFER_SIZE = 13; INTERNET_OPTION_ASYNC_ID = 15; INTERNET_OPTION_ASYNC_PRIORITY = 16; INTERNET_OPTION_PARENT_HANDLE = 21; INTERNET_OPTION_KEEP_CONNECTION = 22; INTERNET_OPTION_REQUEST_FLAGS = 23; INTERNET_OPTION_EXTENDED_ERROR = 24; INTERNET_OPTION_OFFLINE_MODE = 26; INTERNET_OPTION_CACHE_STREAM_HANDLE = 27; INTERNET_OPTION_USERNAME = 28; INTERNET_OPTION_PASSWORD = 29; INTERNET_OPTION_ASYNC = 30; INTERNET_OPTION_SECURITY_FLAGS = 31; INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT = 32; INTERNET_OPTION_DATAFILE_NAME = 33; INTERNET_OPTION_URL = 34; INTERNET_OPTION_SECURITY_CERTIFICATE = 35; INTERNET_OPTION_SECURITY_KEY_BITNESS = 36; INTERNET_OPTION_REFRESH = 37; INTERNET_OPTION_PROXY = 38; INTERNET_OPTION_SETTINGS_CHANGED = 39; INTERNET_OPTION_VERSION = 40; INTERNET_OPTION_USER_AGENT = 41; INTERNET_OPTION_END_BROWSER_SESSION = 42; INTERNET_OPTION_PROXY_USERNAME = 43; INTERNET_OPTION_PROXY_PASSWORD = 44; INTERNET_OPTION_CONTEXT_VALUE = 45; INTERNET_OPTION_CONNECT_LIMIT = 46; INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT = 47; INTERNET_OPTION_POLICY = 48; INTERNET_OPTION_DISCONNECTED_TIMEOUT = 49; INTERNET_OPTION_CONNECTED_STATE = 50; INTERNET_OPTION_IDLE_STATE = 51; INTERNET_OPTION_OFFLINE_SEMANTICS = 52; INTERNET_OPTION_SECONDARY_CACHE_KEY = 53; INTERNET_OPTION_CALLBACK_FILTER = 54; INTERNET_OPTION_CONNECT_TIME = 55; INTERNET_OPTION_SEND_THROUGHPUT = 56; INTERNET_OPTION_RECEIVE_THROUGHPUT = 57; INTERNET_OPTION_REQUEST_PRIORITY = 58; INTERNET_OPTION_HTTP_VERSION = 59; INTERNET_OPTION_RESET_URLCACHE_SESSION = 60; INTERNET_OPTION_ERROR_MASK = 62; INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK; INTERNET_LAST_OPTION = INTERNET_OPTION_PROXY; // Values for INTERNET_OPTION_PRIORITY INTERNET_PRIORITY_FOREGROUND = 1000; // Handle types INTERNET_HANDLE_TYPE_INTERNET = 1; INTERNET_HANDLE_TYPE_CONNECT_FTP = 2; INTERNET_HANDLE_TYPE_CONNECT_GOPHER = 3; INTERNET_HANDLE_TYPE_CONNECT_HTTP = 4; INTERNET_HANDLE_TYPE_FTP_FIND = 5; INTERNET_HANDLE_TYPE_FTP_FIND_HTML = 6; INTERNET_HANDLE_TYPE_FTP_FILE = 7; INTERNET_HANDLE_TYPE_FTP_FILE_HTML = 8; INTERNET_HANDLE_TYPE_GOPHER_FIND = 9; INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML = 10; INTERNET_HANDLE_TYPE_GOPHER_FILE = 11; INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML = 12; INTERNET_HANDLE_TYPE_HTTP_REQUEST = 13; // Values for INTERNET_OPTION_SECURITY_FLAGS SECURITY_FLAG_SECURE = $00000001; // Can query only SECURITY_FLAG_SSL = $00000002; SECURITY_FLAG_SSL3 = $00000004; SECURITY_FLAG_PCT = $00000008; SECURITY_FLAG_PCT4 = $00000010; SECURITY_FLAG_IETFSSL4 = $00000020; SECURITY_FLAG_STRENGTH_WEAK = $10000000; SECURITY_FLAG_STRENGTH_MEDIUM = $40000000; SECURITY_FLAG_STRENGTH_STRONG = $20000000; SECURITY_FLAG_40BIT = SECURITY_FLAG_STRENGTH_WEAK; SECURITY_FLAG_128BIT = SECURITY_FLAG_STRENGTH_STRONG; SECURITY_FLAG_56BIT = SECURITY_FLAG_STRENGTH_MEDIUM; SECURITY_FLAG_UNKNOWNBIT = $80000000; SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT; SECURITY_FLAG_IGNORE_REVOCATION = $00000080; SECURITY_FLAG_IGNORE_UNKNOWN_CA = $00000100; SECURITY_FLAG_IGNORE_WRONG_USAGE = $00000200; SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID; SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID; SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS; SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; // The default major/minor HTTP version numbers HTTP_MAJOR_VERSION = 1; HTTP_MINOR_VERSION = 0; HTTP_VERSION = 'HTTP/1.0'; // Status manifests for Internet status callback INTERNET_STATUS_RESOLVING_NAME = 10; INTERNET_STATUS_NAME_RESOLVED = 11; INTERNET_STATUS_CONNECTING_TO_SERVER = 20; INTERNET_STATUS_CONNECTED_TO_SERVER = 21; INTERNET_STATUS_SENDING_REQUEST = 30; INTERNET_STATUS_REQUEST_SENT = 31; INTERNET_STATUS_RECEIVING_RESPONSE = 40; INTERNET_STATUS_RESPONSE_RECEIVED = 41; INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42; INTERNET_STATUS_PREFETCH = 43; INTERNET_STATUS_CLOSING_CONNECTION = 50; INTERNET_STATUS_CONNECTION_CLOSED = 51; INTERNET_STATUS_HANDLE_CREATED = 60; INTERNET_STATUS_HANDLE_CLOSING = 70; INTERNET_STATUS_REQUEST_COMPLETE = 100; INTERNET_STATUS_REDIRECT = 110; INTERNET_STATUS_INTERMEDIATE_RESPONSE = 120; INTERNET_STATUS_STATE_CHANGE = 200; // The following can be indicated in a state change notification: INTERNET_STATE_CONNECTED = $00000001; // Connected state (mutually exclusive with disconnected) INTERNET_STATE_DISCONNECTED = $00000002; // Disconnected from network INTERNET_STATE_DISCONNECTED_BY_USER = $00000010; // Disconnected by user request INTERNET_STATE_IDLE = $00000100; // No network requests being made (by Wininet) INTERNET_STATE_BUSY = $00000200; // Network requests being made (by Wininet) // If the following value is returned by InternetSetStatusCallback, then // probably an invalid (non-code) address was supplied for the callback INTERNET_INVALID_STATUS_CALLBACK = (-1); // HttpQueryInfo info levels. Generally, there is one info level // for each potential RFC822/HTTP/MIME header that an HTTP server // may send as part of a request response. // The HTTP_QUERY_RAW_HEADERS info level is provided for clients // that choose to perform their own header parsing. HTTP_QUERY_MIME_VERSION = 0; HTTP_QUERY_CONTENT_TYPE = 1; HTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2; HTTP_QUERY_CONTENT_ID = 3; HTTP_QUERY_CONTENT_DESCRIPTION = 4; HTTP_QUERY_CONTENT_LENGTH = 5; HTTP_QUERY_CONTENT_LANGUAGE = 6; HTTP_QUERY_ALLOW = 7; HTTP_QUERY_PUBLIC = 8; HTTP_QUERY_DATE = 9; HTTP_QUERY_EXPIRES = 10; HTTP_QUERY_LAST_MODIFIED = 11; HTTP_QUERY_MESSAGE_ID = 12; HTTP_QUERY_URI = 13; HTTP_QUERY_DERIVED_FROM = 14; HTTP_QUERY_COST = 15; HTTP_QUERY_LINK = 16; HTTP_QUERY_PRAGMA = 17; HTTP_QUERY_VERSION = 18; // Special: part of status line HTTP_QUERY_STATUS_CODE = 19; // Special: part of status line HTTP_QUERY_STATUS_TEXT = 20; // Special: part of status line HTTP_QUERY_RAW_HEADERS = 21; // Special: all headers as ASCIIZ HTTP_QUERY_RAW_HEADERS_CRLF = 22; // Special: all headers HTTP_QUERY_CONNECTION = 23; HTTP_QUERY_ACCEPT = 24; HTTP_QUERY_ACCEPT_CHARSET = 25; HTTP_QUERY_ACCEPT_ENCODING = 26; HTTP_QUERY_ACCEPT_LANGUAGE = 27; HTTP_QUERY_AUTHORIZATION = 28; HTTP_QUERY_CONTENT_ENCODING = 29; HTTP_QUERY_FORWARDED = 30; HTTP_QUERY_FROM = 31; HTTP_QUERY_IF_MODIFIED_SINCE = 32; HTTP_QUERY_LOCATION = 33; HTTP_QUERY_ORIG_URI = 34; HTTP_QUERY_REFERER = 35; HTTP_QUERY_RETRY_AFTER = 36; HTTP_QUERY_SERVER = 37; HTTP_QUERY_TITLE = 38; HTTP_QUERY_USER_AGENT = 39; HTTP_QUERY_WWW_AUTHENTICATE = 40; HTTP_QUERY_PROXY_AUTHENTICATE = 41; HTTP_QUERY_ACCEPT_RANGES = 42; HTTP_QUERY_SET_COOKIE = 43; HTTP_QUERY_COOKIE = 44; HTTP_QUERY_REQUEST_METHOD = 45; // Special: GET/POST etc. HTTP_QUERY_REFRESH = 46; HTTP_QUERY_CONTENT_DISPOSITION = 47; // HTTP 1.1 defined headers HTTP_QUERY_AGE = 48; HTTP_QUERY_CACHE_CONTROL = 49; HTTP_QUERY_CONTENT_BASE = 50; HTTP_QUERY_CONTENT_LOCATION = 51; HTTP_QUERY_CONTENT_MD5 = 52; HTTP_QUERY_CONTENT_RANGE = 53; HTTP_QUERY_ETAG = 54; HTTP_QUERY_HOST = 55; HTTP_QUERY_IF_MATCH = 56; HTTP_QUERY_IF_NONE_MATCH = 57; HTTP_QUERY_IF_RANGE = 58; HTTP_QUERY_IF_UNMODIFIED_SINCE = 59; HTTP_QUERY_MAX_FORWARDS = 60; HTTP_QUERY_PROXY_AUTHORIZATION = 61; HTTP_QUERY_RANGE = 62; HTTP_QUERY_TRANSFER_ENCODING = 63; HTTP_QUERY_UPGRADE = 64; HTTP_QUERY_VARY = 65; HTTP_QUERY_VIA = 66; HTTP_QUERY_WARNING = 67; HTTP_QUERY_MAX = 67; // HTTP_QUERY_CUSTOM - if this special value is supplied as the dwInfoLevel // parameter of HttpQueryInfo then the lpBuffer parameter contains the name // of the header we are to query HTTP_QUERY_CUSTOM = 65535; // HTTP_QUERY_FLAG_REQUEST_HEADERS - if this bit is set in the dwInfoLevel // parameter of HttpQueryInfo then the request headers will be queried for the // request information HTTP_QUERY_FLAG_REQUEST_HEADERS = $80000000; // HTTP_QUERY_FLAG_SYSTEMTIME - if this bit is set in the dwInfoLevel parameter // of HttpQueryInfo AND the header being queried contains date information, // e.g. the "Expires:" header then lpBuffer will contain a SYSTEMTIME structure // containing the date and time information converted from the header string HTTP_QUERY_FLAG_SYSTEMTIME = $40000000; // HTTP_QUERY_FLAG_NUMBER - if this bit is set in the dwInfoLevel parameter of // HttpQueryInfo, then the value of the header will be converted to a number // before being returned to the caller, if applicable HTTP_QUERY_FLAG_NUMBER = $20000000; // HTTP_QUERY_FLAG_COALESCE - combine the values from several headers of the // same name into the output buffer HTTP_QUERY_FLAG_COALESCE = $10000000; HTTP_QUERY_MODIFIER_FLAGS_MASK = HTTP_QUERY_FLAG_REQUEST_HEADERS or HTTP_QUERY_FLAG_SYSTEMTIME or HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_FLAG_COALESCE; HTTP_QUERY_HEADER_MASK = not HTTP_QUERY_MODIFIER_FLAGS_MASK; // HTTP Response Status Codes: HTTP_STATUS_CONTINUE = 100; // OK to continue with request HTTP_STATUS_SWITCH_PROTOCOLS = 101; // Server has switched protocols in upgrade header HTTP_STATUS_OK = 200; // Request completed HTTP_STATUS_CREATED = 201; // Object created, reason = new URI HTTP_STATUS_ACCEPTED = 202; // Async completion (TBS) HTTP_STATUS_PARTIAL = 203; // Partial completion HTTP_STATUS_NO_CONTENT = 204; // No info to return HTTP_STATUS_RESET_CONTENT = 205; // Request completed, but clear form HTTP_STATUS_PARTIAL_CONTENT = 206; // Partial GET furfilled HTTP_STATUS_AMBIGUOUS = 300; // Server couldn't decide what to return HTTP_STATUS_MOVED = 301; // Object permanently moved HTTP_STATUS_REDIRECT = 302; // Object temporarily moved HTTP_STATUS_REDIRECT_METHOD = 303; // Redirection w/ new access method HTTP_STATUS_NOT_MODIFIED = 304; // If-modified-since was not modified HTTP_STATUS_USE_PROXY = 305; // Redirection to proxy, location header specifies proxy to use HTTP_STATUS_REDIRECT_KEEP_VERB = 307; // HTTP/1.1: keep same verb HTTP_STATUS_BAD_REQUEST = 400; // Invalid syntax HTTP_STATUS_DENIED = 401; // Access denied HTTP_STATUS_PAYMENT_REQ = 402; // Payment required HTTP_STATUS_FORBIDDEN = 403; // Request forbidden HTTP_STATUS_NOT_FOUND = 404; // Object not found HTTP_STATUS_BAD_METHOD = 405; // Method is not allowed HTTP_STATUS_NONE_ACCEPTABLE = 406; // No response acceptable to client found HTTP_STATUS_PROXY_AUTH_REQ = 407; // Proxy authentication required HTTP_STATUS_REQUEST_TIMEOUT = 408; // Server timed out waiting for request HTTP_STATUS_CONFLICT = 409; // User should resubmit with more info HTTP_STATUS_GONE = 410; // The resource is no longer available HTTP_STATUS_AUTH_REFUSED = 411; // Couldn't authorize client HTTP_STATUS_PRECOND_FAILED = 412; // Precondition given in request failed HTTP_STATUS_REQUEST_TOO_LARGE = 413; // Request entity was too large HTTP_STATUS_URI_TOO_LONG = 414; // Request URI too long HTTP_STATUS_UNSUPPORTED_MEDIA = 415; // Unsupported media type HTTP_STATUS_SERVER_ERROR = 500; // Internal server error HTTP_STATUS_NOT_SUPPORTED = 501; // Required not supported HTTP_STATUS_BAD_GATEWAY = 502; // Error response received from gateway HTTP_STATUS_SERVICE_UNAVAIL = 503; // Temporarily overloaded HTTP_STATUS_GATEWAY_TIMEOUT = 504; // Timed out waiting for gateway HTTP_STATUS_VERSION_NOT_SUP = 505; // HTTP version not supported HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE; HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP; // Values for dwModifiers parameter of HttpAddRequestHeaders HTTP_ADDREQ_INDEX_MASK = $0000FFFF; HTTP_ADDREQ_FLAGS_MASK = $FFFF0000; // HTTP_ADDREQ_FLAG_ADD_IF_NEW - the header will only be added if it doesn't // already exist HTTP_ADDREQ_FLAG_ADD_IF_NEW = $10000000; // HTTP_ADDREQ_FLAG_ADD - if HTTP_ADDREQ_FLAG_REPLACE is set but the header is // not found then if this flag is set, the header is added anyway, so long as // there is a valid header-value HTTP_ADDREQ_FLAG_ADD = $20000000; // HTTP_ADDREQ_FLAG_COALESCE - coalesce headers with same name. e.g. // "Accept: text/*" and "Accept: audio/*" with this flag results in a single // header: "Accept: text/*, audio/*" HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = $40000000; HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = $01000000; HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA; // HTTP_ADDREQ_FLAG_REPLACE - replaces the specified header. Only one header can // be supplied in the buffer. If the header to be replaced is not the first // in a list of headers with the same name, then the relative index should be // supplied in the low 8 bits of the dwModifiers parameter. If the header-value // part is missing, then the header is removed HTTP_ADDREQ_FLAG_REPLACE = $80000000; // Flags for HttpSendRequestEx(), HttpEndRequest() HSR_ASYNC = WININET_API_FLAG_ASYNC; // Force async HSR_SYNC = WININET_API_FLAG_SYNC; // Force sync HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT; // Use dwContext value HSR_INITIATE = $00000008; // Iterative operation (completed by HttpEndRequest) HSR_DOWNLOAD = $00000010; // Download to file HSR_CHUNKED = $00000020; // Operation is send of chunked data // InternetErrorDlg - Provides UI for certain Errors. FLAGS_ERROR_UI_FILTER_FOR_ERRORS = $01; FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = $02; FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = $04; FLAGS_ERROR_UI_FLAGS_NO_UI = $08; FLAGS_ERROR_UI_SERIALIZE_DIALOGS = $10; // Internet API error returns INTERNET_ERROR_BASE = 12000; ERROR_INTERNET_OUT_OF_HANDLES = INTERNET_ERROR_BASE + 1; ERROR_INTERNET_TIMEOUT = INTERNET_ERROR_BASE + 2; ERROR_INTERNET_EXTENDED_ERROR = INTERNET_ERROR_BASE + 3; ERROR_INTERNET_INTERNAL_ERROR = INTERNET_ERROR_BASE + 4; ERROR_INTERNET_INVALID_URL = INTERNET_ERROR_BASE + 5; ERROR_INTERNET_UNRECOGNIZED_SCHEME = INTERNET_ERROR_BASE + 6; ERROR_INTERNET_NAME_NOT_RESOLVED = INTERNET_ERROR_BASE + 7; ERROR_INTERNET_PROTOCOL_NOT_FOUND = INTERNET_ERROR_BASE + 8; ERROR_INTERNET_INVALID_OPTION = INTERNET_ERROR_BASE + 9; ERROR_INTERNET_BAD_OPTION_LENGTH = INTERNET_ERROR_BASE + 10; ERROR_INTERNET_OPTION_NOT_SETTABLE = INTERNET_ERROR_BASE + 11; ERROR_INTERNET_SHUTDOWN = INTERNET_ERROR_BASE + 12; ERROR_INTERNET_INCORRECT_USER_NAME = INTERNET_ERROR_BASE + 13; ERROR_INTERNET_INCORRECT_PASSWORD = INTERNET_ERROR_BASE + 14; ERROR_INTERNET_LOGIN_FAILURE = INTERNET_ERROR_BASE + 15; ERROR_INTERNET_INVALID_OPERATION = INTERNET_ERROR_BASE + 16; ERROR_INTERNET_OPERATION_CANCELLED = INTERNET_ERROR_BASE + 17; ERROR_INTERNET_INCORRECT_HANDLE_TYPE = INTERNET_ERROR_BASE + 18; ERROR_INTERNET_INCORRECT_HANDLE_STATE = INTERNET_ERROR_BASE + 19; ERROR_INTERNET_NOT_PROXY_REQUEST = INTERNET_ERROR_BASE + 20; ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND = INTERNET_ERROR_BASE + 21; ERROR_INTERNET_BAD_REGISTRY_PARAMETER = INTERNET_ERROR_BASE + 22; ERROR_INTERNET_NO_DIRECT_ACCESS = INTERNET_ERROR_BASE + 23; ERROR_INTERNET_NO_CONTEXT = INTERNET_ERROR_BASE + 24; ERROR_INTERNET_NO_CALLBACK = INTERNET_ERROR_BASE + 25; ERROR_INTERNET_REQUEST_PENDING = INTERNET_ERROR_BASE + 26; ERROR_INTERNET_INCORRECT_FORMAT = INTERNET_ERROR_BASE + 27; ERROR_INTERNET_ITEM_NOT_FOUND = INTERNET_ERROR_BASE + 28; ERROR_INTERNET_CANNOT_CONNECT = INTERNET_ERROR_BASE + 29; ERROR_INTERNET_CONNECTION_ABORTED = INTERNET_ERROR_BASE + 30; ERROR_INTERNET_CONNECTION_RESET = INTERNET_ERROR_BASE + 31; ERROR_INTERNET_FORCE_RETRY = INTERNET_ERROR_BASE + 32; ERROR_INTERNET_INVALID_PROXY_REQUEST = INTERNET_ERROR_BASE + 33; ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36; ERROR_INTERNET_SEC_CERT_DATE_INVALID = INTERNET_ERROR_BASE + 37; ERROR_INTERNET_SEC_CERT_CN_INVALID = INTERNET_ERROR_BASE + 38; ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR = INTERNET_ERROR_BASE + 39; ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR = INTERNET_ERROR_BASE + 40; ERROR_INTERNET_MIXED_SECURITY = INTERNET_ERROR_BASE + 41; ERROR_INTERNET_CHG_POST_IS_NON_SECURE = INTERNET_ERROR_BASE + 42; ERROR_INTERNET_POST_IS_NON_SECURE = INTERNET_ERROR_BASE + 43; ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED = INTERNET_ERROR_BASE + 44; ERROR_INTERNET_INVALID_CA = INTERNET_ERROR_BASE + 45; ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP = INTERNET_ERROR_BASE + 46; ERROR_INTERNET_ASYNC_THREAD_FAILED = INTERNET_ERROR_BASE + 47; ERROR_INTERNET_REDIRECT_SCHEME_CHANGE = INTERNET_ERROR_BASE + 48; ERROR_INTERNET_DIALOG_PENDING = INTERNET_ERROR_BASE + 49; ERROR_INTERNET_RETRY_DIALOG = INTERNET_ERROR_BASE + 50; ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR = INTERNET_ERROR_BASE + 52; ERROR_INTERNET_INSERT_CDROM = INTERNET_ERROR_BASE + 53; // HTTP API errors ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150; ERROR_HTTP_DOWNLEVEL_SERVER = INTERNET_ERROR_BASE + 151; ERROR_HTTP_INVALID_SERVER_RESPONSE = INTERNET_ERROR_BASE + 152; ERROR_HTTP_INVALID_HEADER = INTERNET_ERROR_BASE + 153; ERROR_HTTP_INVALID_QUERY_REQUEST = INTERNET_ERROR_BASE + 154; ERROR_HTTP_HEADER_ALREADY_EXISTS = INTERNET_ERROR_BASE + 155; ERROR_HTTP_REDIRECT_FAILED = INTERNET_ERROR_BASE + 156; ERROR_HTTP_NOT_REDIRECTED = INTERNET_ERROR_BASE + 160; ERROR_HTTP_COOKIE_NEEDS_CONFIRMATION = INTERNET_ERROR_BASE + 161; ERROR_HTTP_COOKIE_DECLINED = INTERNET_ERROR_BASE + 162; ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION = INTERNET_ERROR_BASE + 168; // Additional Internet API error codes ERROR_INTERNET_SECURITY_CHANNEL_ERROR = INTERNET_ERROR_BASE + 157; ERROR_INTERNET_UNABLE_TO_CACHE_FILE = INTERNET_ERROR_BASE + 158; ERROR_INTERNET_TCPIP_NOT_INSTALLED = INTERNET_ERROR_BASE + 159; ERROR_INTERNET_DISCONNECTED = INTERNET_ERROR_BASE + 163; ERROR_INTERNET_SERVER_UNREACHABLE = INTERNET_ERROR_BASE + 164; ERROR_INTERNET_PROXY_SERVER_UNREACHABLE = INTERNET_ERROR_BASE + 165; ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT = INTERNET_ERROR_BASE + 166; ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT = INTERNET_ERROR_BASE + 167; ERROR_INTERNET_SEC_INVALID_CERT = INTERNET_ERROR_BASE + 169; ERROR_INTERNET_SEC_CERT_REVOKED = INTERNET_ERROR_BASE + 170; // InternetAutodial specific errors ERROR_INTERNET_FAILED_DUETOSECURITYCHECK = INTERNET_ERROR_BASE + 171; INTERNET_ERROR_LAST = ERROR_INTERNET_FAILED_DUETOSECURITYCHECK; // Flags for InternetGetConnectedState INTERNET_CONNECTION_MODEM = 1; INTERNET_CONNECTION_LAN = 2; INTERNET_CONNECTION_PROXY = 4; INTERNET_CONNECTION_MODEM_BUSY = 8; // Proxy Auto-Detect flags PROXY_AUTO_DETECT_TYPE_DHCP = $00000001; PROXY_AUTO_DETECT_TYPE_DNS_A = $00000002; type // Types definitions HINTERNET = Pointer; PHINTERNET = ^HINTERNET; LPHINTERNET = PHINTERNET; INTERNET_PORT = Word; PINTERNET_PORT = ^INTERNET_PORT; LPINTERNET_PORT = PINTERNET_PORT; // TInternetProxyInfo - structure supplied with INTERNET_OPTION_PROXY to get/ // set proxy information on a InternetOpen handle PInternetProxyInfo = ^INTERNET_PROXY_INFO; INTERNET_PROXY_INFO = record dwAccessType: DWORD; // dwAccessType - access type lpszProxy: LPCSTR; // lpszProxy - proxy server list lpszProxyBypass: LPCSTR;// lpszProxyBypass - proxy bypass list end; TInternetProxyInfo = INTERNET_PROXY_INFO; LPINTERNET_PROXY_INFO = PInternetProxyInfo; // INTERNET_CONNECTED_INFO - information used to set the global connected state PInternetConnectedInfo = ^INTERNET_CONNECTED_INFO; INTERNET_CONNECTED_INFO = record dwConnectedState: DWORD; // dwConnectedState - new connected/disconnected state. dwFlags: DWORD; // dwFlags - flags controlling connected->disconnected (or disconnected-> // connected) transition. See below end; TInternetConnectedInfo = INTERNET_CONNECTED_INFO; LPINTERNET_CONNECTED_INFO = PInternetConnectedInfo; PInternetOpen = function (lpszAgent: PChar; dwAccessType: DWORD; lpszProxy, lpszProxyBypass: PChar; dwFlags: DWORD): HINTERNET; stdcall; PInternetCloseHandle = function (hInet: HINTERNET): BOOL; stdcall; PInternetConnect = function (hInet: HINTERNET; lpszServerName: PChar; nServerPort: INTERNET_PORT; lpszUsername: PChar; lpszPassword: PChar; dwService: DWORD; dwFlags: DWORD; dwContext: DWORD): HINTERNET; stdcall; PInternetQueryOption = function (hInet: HINTERNET; dwOption: DWORD; lpBuffer: Pointer; var lpdwBufferLength: DWORD): BOOL; stdcall; PDetectAutoProxyUrl = function (lpszAutoProxyUrl:LPSTR; dwAutoProxyUrlLength:DWORD; dwDetectFlags:DWORD):BOOL;stdcall; TWinInetFunctions = record InternetOpen:PInternetOpen; InternetCloseHandle:PInternetCloseHandle; InternetConnect:PInternetConnect; InternetQueryOption:PInternetQueryOption; DetectAutoProxyUrl:PDetectAutoProxyUrl; end; // Limited Auto-Proxy support stuff (JSProxy.dll) PInternetGetProxyInfo = function ( lpszUrl:PChar; dwUrlLength:DWORD; lpszUrlHostName:PChar; dwUrlHostNameLength:DWORD; lplpszProxyHostName:PLPSTR; lpdwProxyHostNameLength:LPDWORD):BOOL;stdcall; PInternetInitializeAutoProxyDll = function (dwVersion:DWORD; lpszDownloadedTempFile:LPSTR; lpszMime:LPSTR; lpAutoProxyCallbacks:Pointer; lpAutoProxyScriptBuffer:Pointer):BOOL;stdcall; PInternetDeInitializeAutoProxyDll = function (lpszMime:LPSTR; dwReserved:DWORD):BOOL;stdcall; TJSProxyFunctions = record InternetGetProxyInfo:PInternetGetProxyInfo; InternetInitializeAutoProxyDll:PInternetInitializeAutoProxyDll; InternetDeInitializeAutoProxyDll:PInternetDeInitializeAutoProxyDll; end; implementation end.