SecureBlackbox 2020 Delphi Edition

Questions / Feedback?

HTTPClient Component

Properties   Methods   Events   Configuration Settings   Errors  

The HTTPClient component implements client-side functionality of HTTP and HTTPS protocols.

Syntax

TsbxHTTPClient

Remarks

HTTPClient provides means of exchanging HTTP messages with HTTP servers. Both plain (HTTP) and secure (HTTPS) connection types are supported.

Features supported

  • All standard request types (GET, POST, PUT etc.), plus custom VERBs
  • TLS 1.2 and 1.3 (and earlier versions for older servers)
  • Strong client and server authentication on TLS and HTTP levels
  • Flexible custom header adjustment
  • A variety of proxy server types

Configuring the component

HTTPClient is very easy to configure. In some cases, like in the example given below, you do not need any special tuneups whatsoever:

  client.Get("http://www.mywebserver.com/");
  if (client.StatusCode == 200) {
    string response = client.OutputString;
  }
You may need to adjust the component settings if you plan to connect to endpoints secured with TLS. By default, HTTPClient relies on the system settings when validating server certificates. If you would prefer to ignore the system trust and implement customized chain validation procedures - such as certificate pinning - in your code instead, set TLSSettings.AutoValidateCertificates to false, and subscribe to CertificateValidate event. This event will fire whenever a server certificate validation needs to be performed.

Use ClientChain collection to provide your certificates for client authentication. Make sure the provided certificate contains a private key; otherwise it will be unable to authenticate.

To provide custom HTTP headers, subscribe to HeadersPrepared event. HTTPClient fires this event right before sending the request out to the server, giving you an opportunity to alter the headers or add your own. The list of headers can be accessed via the RequestHeaders collection. Note: the headers can only be modified from the HeadersPrepared event handler. Setting them earlier or later in your code won't provide the expected effect.

Having set up the component, use the appropriate variant of the request method (such as: Get, GetBytes, or GetFile) to obtain the response in the desired format (string, memory buffer, or file).

Property List


The following is the full list of the properties of the component with short descriptions. Click on the links for further details.

BlockedCertificatesThe certificates that must be rejected as trust anchors.
ClientChainThe TLS client certificate chain.
ConnectionInfoReturns the details of the underlying network connection.
CustomRequestSpecifies a custom request verb.
DynamicDataTakes a piece of data to be sent to the server within a dynamic POST or PUT request.
ExternalCryptoProvides access to external signing and DC parameters.
KeepAlivePolicyDefines the keep-alive handling policy.
KnownCertificatesAdditional certificates for chain validation.
KnownCRLsAdditional CRLs for chain validation.
KnownOCSPsAdditional OCSP responses for chain validation.
OutputBytesContains the response content.
OutputStringContains the response content.
ProxyThe proxy server settings.
ReasonPhraseContains the Reason Phrase element of the server's response.
RequestHeadersContains HTTP request headers.
RequestParametersProvides access to common HTTP request properties.
ResponseHeadersContains the HTTP server's response headers.
ResponseParametersContains the HTTP server's response parameters.
ServerChainThe TLS server's certificate chain.
SocketSettingsManages network connection settings.
StatusCodeContains the Status Code element of the server's response.
TLSSettingsManages TLS layer settings.
TrustedCertificatesA list of trusted certificates for chain validation.
UseDigestAuthEnables or disables the HTTP Digest authentication.
UseNTLMAuthEnables or disables NTLM authentication.

Method List


The following is the full list of the methods of the component with short descriptions. Click on the links for further details.

ConfigSets or retrieves a configuration setting.
DeleteSends a DELETE request to the server.
GetSends a GET request to the server.
GetBytesSends a GET request to the server and returns the output.
GetFileSends a GET request to the server and saves the output to a file.
GetStreamSends a GET request to the server and saves the output in a stream.
HeadSends a HEAD request to the server.
OptionsSends an OPTIONS request to the server.
PostSends a POST request to the server.
PostBytesSends a POST request to the server.
PostFileSends a file to the server using a POST request.
PostStreamSends a POST request to the server.
PostWebFormPosts a web form data to the server.
PutSends a PUT request to the server.
PutBytesSends a PUT request to the server.
PutFileSends a file to the server using a PUT request.
PutStreamSends a PUT request to the server.
TraceSends a TRACE request to the server.

Event List


The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.

CertificateValidateFires when the server's TLS certificate has to be validated.
CookieFired to report a received cookie.
DocumentBeginMarks the start of the incoming HTML document or file.
DocumentEndMarks the successful receipt of the incoming HTML document or file.
DynamicDataNeededRequests a portion of data to be uploaded from the application.
ErrorInformation about errors during data delivery.
ExternalSignHandles remote or external signing initiated by the SignExternal method or other source.
HeadersPreparedFires when the request headers have been formed and are about to be sent to the server.
HeadersReceivedFires when the HTTP response headers have just been received from the server.
NotificationThis event notifies the application about an underlying control flow event.
ProgressFires periodically during the data transfer.
RedirectionFires when the server suggests a redirect.

Configuration Settings


The following is a list of configuration settings for the component with short descriptions. Click on the links for further details.

CacheStreamOutputTells the component whether to cache stream- and file-bound responses in the component.
ForceNTLMAuthActivates and enforces NTLM authentication.
IgnoreSystemTrustWhether trusted Windows Certificate Stores should be treated as trusted.
IgnoreUnknownTransferEncodingsAll incoming responses with unknown transfer encodings are ignored if this property is true.
MaxRedirectionsThe maximum number of HTTP redirects.
PersistentAuthHeaderWhether to resend NTLM negotiation on every request.
RequestCompressionGZipAsk server to use GZip compression.
RequestCompressionLevelAsk server to use the specified compression level.
SendBufferSizeSize of send buffer in bytes.
SuppressRedirectionContentWhether to suppress the redirection content.
TempPathPath for storing temporary files.
TolerateMinorChainIssuesWhether to tolerate minor chain issues.
Use100ContinueWhether to use 100-continue for POST and PUT commands.
UseCompressionWhether to use GZip compression.
UseMicrosoftCTLEnables or disables automatic use of Microsoft online certificate trust list.
UseSystemCertificatesEnables or disables the use of the system certificates.
CheckKeyIntegrityBeforeUseEnables or disable private key integrity check before use.
CookieCachingSpecifies whether a cookie cache should be used for HTTP(S) transports.
CookiesGets or sets local cookies for the component (supported for HTTPClient, RESTClient and SOAPClient only).
DefDeriveKeyIterationsSpecifies the default key derivation algorithm iteration count.
EnableClientSideSSLFFDHEEnables or disables finite field DHE key exchange support in TLS clients.
GlobalCookiesGets or sets global cookies for all the HTTP transports.
HttpUserAgentSpecifies the user agent name to be used by all HTTP clients.
LogDestinationSpecifies the debug log destination.
LogDetailsSpecifies the debug log details to dump.
LogFileSpecifies the debug log filename.
LogFiltersSpecifies the debug log filters.
LogFlushModeSpecifies the log flush mode.
LogLevelSpecifies the debug log level.
LogMaxEventCountSpecifies the maximum number of events to cache before further action is taken.
LogRotationModeSpecifies the log rotation mode.
MaxASN1BufferLengthSpecifies the maximal allowed length for ASN.1 primitive tag data.
MaxASN1TreeDepthSpecifies the maximal depth for processed ASN.1 trees.
OCSPHashAlgorithmSpecifies the hash algorithm to be used to identify certificates in OCSP requests.
UseOwnDNSResolverSpecifies whether the client components should use own DNS resolver.
UseSharedSystemStoragesSpecifies whether the validation engine should use a global per-process copy of the system certificate stores.
UseSystemOAEPAndPSSEnforces or disables the use of system-driven RSA OAEP and PSS computations.
UseSystemRandomEnables or disables the use of the OS PRNG.

Copyright (c) 2022 /n software inc. - All rights reserved.
SecureBlackbox 2020 Delphi Edition - Version 20.0 [Build 8166]