kolibrios/programs/develop/libraries/http/http_en.txt
hidnplayr d52d41e20d Extended http library API to allow keepalive connections, streaming connections and transfer of large files.
git-svn-id: svn://kolibrios.org@5534 a494cfbc-eb01-0410-851d-a64ba20cac60
2015-03-20 12:04:14 +00:00

58 lines
3.3 KiB
Plaintext

get(*url, identifier, flags, *add_header);
*url = pointer to ASCIIZ URL
identifier = identified of previously opened connection, or 0 to open a new one
flags = bit flags (see http.inc user flags)
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
Every additional parameter must end with CR LF bytes, including the last line.
Initiates a HTTP connection, using 'GET' method.
- returns 0 on error, identifier otherwise.
head(*url, identifier, flags, *add_header);
*url = pointer to ASCIIZ URL
identifier = identified of previously opened connection, or 0 to open a new one
flags = bit flags (see http.inc user flags)
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
Every additional parameter must end with CR LF bytes, including the last line.
Initiate a HTTP connection, using 'HEAD' method.
- returns 0 on error, identifier otherwise
post(*url, identifier, flags, *add_header, *content-type, content-length);
*url = pointer to ASCIIZ URL
identifier = identified of previously opened connection, or 0 to open a new one
flags = bit flags (see http.inc user flags)
*add_header = pointer to ASCIIZ additional header parameters, or null for none.
Every additional parameter must end with CR LF bytes, including the last line.
*content-type = pointer to ASCIIZ string containing content type.
content-length = length of the content (in bytes).
Initiate a HTTP connection, using 'POST' method.
The content itself must be send to the socket (which you can find in the structure),
using system function 75, 6.
- returns 0 on error, identifier otherwise
receive(identifier);
identifier = identifier which one of the previous functions returned
This procedure will handle all incoming data for a connection and place it in the buffer.
As long as the procedure expects more data, -1 is returned and the procedure must be called again.
- When transfer is done, the procedure will return 0.
The HTTP header is placed together with some flags and other attributes in the http_msg structure.
This structure is defined in http.inc (and not copied here because it might still change.)
The identifier used by the functions is actually a pointer to this structure.
In the dword named .flags, the library will set various bit-flags indicating the status of the process.
(When a transfer is done, one should check these bit-flags to find out if the transfer was error-free.)
The HTTP header is placed at the end of this structure. The content is placed in another buffer.
The dword .status contains the status code received from the server (e.g. 200 for OK).
In header_length you'll find the length of the header as soon as it has been received.
In content_ptr you'll find a pointer to the actual content.
In content_length you'll find the length of the content.
In content_received, you'll find the number of content bytes already received.
send(identifier, *dataptr, datalength);
identifier = identifier which one of the previous functions returned
*dataptr = pointer to the data you want to send
datalength = length of the data to send (in bytes)
This procedure can be used to send data to the server (POST)
- returns number of bytes sent, -1 on error
All procedures are non blocking!