The OMHTTP library provides portable access to Hypertext Transmission Protocol (HTTP) communications. This
library uses two data structures specific to it: the HttpRequest
shelf and
the HttpResponse
shelf. These shelves are standard stream
shelves, with a number of
predefined keyed items. As with any other stream
shelf, you are free to access and modify the
contents. Both shelves are subject to all usual shelf and stream
operations, and you may test or modify
them at will. However, you should observe and maintain the data format of both shelves, or the HTTP functions may
behave in an unexpected fashion. To ensure data integrity, access the items on these shelves only through their
respective functions.
The HttpRequest
shelf is used to create an HTTP-formatted request message, which can then be sent
to an HTTP server. Most simple requests can be created using HttpRequestSetFromUrl
, which will create
sufficient items in the HttpRequest
shelf to cover most circumstances. This shelf contains the following
keyed items:
last-error
—a string describing any errors encountered during the last function
call. If no errors were detected, it is a zero-length string.
host
—the IP address of the host. This value must be a valid IP address.
port
—the HTTP server port number. This must be a string representation of a valid
port number. The default value is 80
.
proxy-host
—the IP address of the proxy host. This value must be a valid IP address.
proxy-port
—the HTTP proxy server port number. This must be a string representation
of a valid port number. The default value is 80
.
method
—the HTTP request method. The default value is GET
.
path
—the path and file name of the resource on the HTTP server to access. The path
must begin with the /
character, which is the default value.
http-version
—the version of HTTP used to format the message. The default value
is HTTP/1.0
.
cookie-version
—the version of cookie support. The default value is 1
.
entity-body
—additional information to send to the server. The default value is a
zero-length string.
The HttpResponse
shelf contains the information needed to construct an HTTP-formatted response
message that an HTTP server will return to a client after receiving a request. It contains the following keyed
items:
last-error
—a string describing any errors that occurred during the last function call. If
no errors were detected, it is a zero-length string.
http-version
—the version of HTTP used to format the message. The default value
is HTTP/1.0
.
status-code
—the numeric status code indicating the success of the request. The default
value is 200
, indicating success.
reason-phrase
—a textual explanation of the status code. The default value is OK
.
entity-body
—the body of information to return to the client. The default is a zero-length
string.
The functions in the HTTP library generally fall into one of three broad categories, depending on what sort of program they are commonly called in. Though there is no technical reason they cannot be called elsewhere, the functions are used most often in the following types of programs:
These functions are found most often in client programs:
HttpRequestSetFromUrl
,
HttpRequestSetSearchItem
,
HttpRequestSetProxy
,
HttpRequestSend
, and
HttpObjectGetCookieAttributes
.
The following functions are found most often in server programs:
HttpServiceAwaitRequest
,
HttpConnectionSendResponse
,
HttpResponseOutput
,
HttpRequestGetSearchItems
,
HttpObjectGetHeaders
,
HttpObjectGetCookieValues
,
HttpObjectSetCookieValue
, and
HttpObjectSetCookieAttribute
.
A small number of functions appear in either a client or a server program:
The following task topics show you how to use the HTTP library:
The functions in this library use the following data structures:
HttpRequest
—to create an HTTP-formatted request message, which can then be sent to
an HTTP server.
HttpResponse
—contains the information needed to construct an HTTP-formatted
response message that an HTTP server will return to a client after receiving a request.
To use OMHTTP, you must include the following code near the top of your program:
include "omhttp.xin"