%HTTP_GET
Send a document retrieval request to a server
WTSupported in traditional Synergy on Windows
|
WNSupported in Synergy .NET on Windows
|
USupported on UNIX
|
VSupported on OpenVMS
|
status = %HTTP_GET(uri, [timeout], receive_document, error, in_headers, out_headers, & [log_file], [protocols], [ciphers], [cert_file], [CA_file], [HTTP_RELURI][, version])
Return value
status
Returns 0 if successful or an error number if unsuccessful.
Arguments
uri
The absolute URI (Uniform Resource Indicator) of the document to get. (a)
timeout
(optional) The number of seconds to wait from the time a request is sent (after the connection to the server) until a response is received from the server. The default is 0, which specifies wait forever. (n)
receive_document
The document received in response to the get request. (System.String)
error
Returned with an error message if status is nonzero. Otherwise, it is ^NULL. (System.String)
in_headers
A dynamic array of one or more HTTP header strings. Each string has the form header_name[:value]. If not needed, pass ^NULL. ([*]System.String)
out_headers
A dynamic array System.String to receive one or more returned HTTP header strings. If no headers are returned, this is ^NULL. ([*]System.String)
log_file
(optional) The name and location of a log file to log HTTP packet contents. (a)
protocols
(optional) One or more SSL protocol versions in effect, separated by a plus sign (for example, SSLVER_TLS1_1+SSLVER_TLS1_2+SSLVER_TLS1_3): (n)
SSLVER_ALL = All protocols are available.
SSLVER_TLS1_2 = TLS version 1.2 (default)
SSLVER_TLS1_3 = TLS version 1.3
SSLVER_TLS1_1 = TLS version 1.1 (deprecated)
We recommend using TLS 1.2 and higher for secure sites. Protocol versions lower than TLS 1.1 (including SSLVER_SSL2, SSLVER_SSL3, and SSLVER_TLS1) result in an "Invalid SSL protocol specified" error. |
ciphers
(UNIX and OpenVMS only; optional) A cipher list that specifies the encryption methods in effect. On Windows, ciphers is ignored and the system default ciphers are used. (a)
cert_file
(optional) The name of the client certificate file or, on Windows, a certificate in the Windows Certificate Store. (a)
CA_file
(optional) The name of a file containing certificate authorities that the client trusts or, on Windows, the keyword “cert_store,” to reference the certificate authorities contained in the Windows Certificate Store. (a)
HTTP_RELURI
(optional) If passed, the absolute URI is translated and sent as a relative path in the HTTP request. If not passed, the absolute URI is sent with the path exactly as specified. (n)
version
(optional) A string that contains the HTTP version number to be placed in the document header. The default version number is 1.0. (a)
Discussion
%HTTP_GET sends a request to an HTTP or HTTPS server to retrieve a document. The response from the server is returned in a System.String.
%HTTP_GET is functionally equivalent to %HTTP_CLIENT_GET, except it uses objects for certain parameters and its maximum HTTP header size is larger. |
The value of uri determines what type of connection will be made to the server. If you pass an HTTP URI, the client establishes an HTTP connection. If you pass an HTTPS URI, the client establishes an SSL connection. Chunked encoding is supported with HTTP versions of 1.1 and higher.
For most applications, the standard default HTTP headers will work as provided. However, some HTTP servers require extra header values to process the HTTP message properly. The in_headers argument therefore enables you to add or modify headers for client GET requests. If you pass in a header name that was previously set, the last header value passed for that name will be the one sent in the HTTP message. The maximum HTTP header size for %HTTP_GET is 2048. An HTTP header array is limited to a maximum of 100 elements, and each element can have up to 2048 bytes with %HTTP_GET.
Passing a log_file causes both the HTTP request packet and the HTTP response packet to be logged to the specified file. This logging feature is available primarily for debugging purposes and should not normally be turned on in a secure production environment. Logs of a request packet include the HTTP method (in this case, GET), the URI, the HTTP version, all HTTP headers, and the body of the HTTP packet. Logs of a response packet include the HTTP version, status, reason, all HTTP headers, and the body of the HTTP packet. Log entries are always appended to an existing log file. If the log file does not exist, it is created. A log file can only be created on a local drive; remote drives are not supported.
On UNIX and OpenVMS, if ciphers is not specified, the ciphers designated by the cipher list format value DEFAULT are in effect. See Ciphers (UNIX and OpenVMS) for more information and a list of supported ciphers.
The cert_file and CA_file arguments
- On UNIX and OpenVMS, if cert_file and CA_file are specified, they must be the names of existing files in PEM or DER format.
- On Windows, if cert_file is specified, it must be a certificate in the Windows Certificate Store (see below for the format). If CA_file is specified, it may be the name of an existing file in PEM format (DER format is not supported on Windows) or the keyword “cert_store” to reference the certificate authorities contained in the Windows Certificate Store.
A PEM certificate file may contain both the certificate and private key. If it doesn’t contain the private key, the Synergy HTTP document transport API will load a PEM-based key file whose name is derived by appending “key.pem” to the end of the certificate filename. For example, for a certificate file named test.der or test.pem, the API will load a key file named testkey.pem. If an authentication error occurs, the error is returned and the connection is terminated.
For cert_file, the format for specifying a certificate in the Windows Certificate Store is as follows:
store_location\store_name\thumbprint
or
store_location\store_name\common_name
where
store_location is one of the following: CurrentUser, LocalMachine, CurrentService, Services, Users, CurrentUserGroupPolicy, LocalMachineGroupPolicy, LocalMachineEnterprise.
store_name is one of the following: My, Root, Trust, CA.
thumbprint is the 40-character certificate thumbprint.
common_name is the certificate’s common name, which you provided when the certificate was purchased or created.
The thumbprint and the common name can be obtained from the Details tab in the Windows Certificate Manager (certlm.msc for local machine certificates or certmgr.msc for user certificates). The thumbprint is unique for the certificate, but will change when it is renewed, which can be as often as every 30 days. Consequently, you may wish to use the common name instead, as long as it is unique. Thumbprint is included in the list of fields on the Details tab; to see the common name, select “Subject” from that list and look for the “CN” value (this will typically be the same as the “Issued To” value in the certificate list). |
The specification can include a leading backslash.
For example,
LocalComputer\My\d7890d96a266ad39d340aa991e17a2875ccf8175
Or
\LocalComputer\Root\MyCert
More information about the store location and store name is available in System Store Locations in the Microsoft documentation.
If you pass an HTTPS URI but don’t specify CA_file, server verification will be turned off. Because this poses a security risk, we recommend that you not do it unless you only need encryption without verification. |