▼ |  | Net: Networking Libraries

1 | HTTP Client
2 | URLs and HTTP
3 | URI Codec: Encoding and Decoding URIs
4 | Web Socket
5 | FTP: Client
6 | Send URL: Opening a Web Browser
7 | SMTP: Sending E-Mail
8 | sendmail: Sending E-Mail
9 | Headers: Parsing and Constructing
10 | IMAP: Reading Mail
11 | POP3: Reading Mail
12 | MIME: Decoding Internet Data
13 | Base 64: Encoding and Decoding
14 | Quoted-Printable: Encoding and Decoding
15 | DNS: Domain Name Service Queries
16 | NNTP: Newsgroup Protocol
17 | TCP: Unit and Signature
18 | TCP Redirect: tcp^ via Channels
19 | SSL Unit: tcp^ via SSL
20 | CGI Scripts
21 | Cookie: HTTP Client Storage
| Bibliography
| Index

On this page:

http-conn?
http-conn-live?
http-conn
http-conn-open!
http-conn-open
http-conn-close!
http-conn-abandon!
http-conn-send!
http-conn-recv!
http-conn-sendrecv!
http-sendrecv

top ← prev up next →

### 1`` HTTP Client

(require net/http-client) | package: base

The net/http-client library provides utilities to use the HTTP protocol.

> procedure (http-conn? x) → boolean?
> x : any/c

Identifies an HTTP connection.

> procedure (http-conn-live? x) → boolean?
> x : any/c

Identifies an HTTP connection that is "live", i.e. one for which http-conn-send! is valid.

> procedure (http-conn) → http-conn?

Returns a fresh HTTP connection.

> > procedure
> > (http-conn-open! |  | hc |  |  |  |
> > |  | host |  |  |  |
> > | [ | #:ssl? ssl? |  |  |  |
> > |  | #:port port]) |  | → |  | void?
> hc : http-conn?
> host : (or/c bytes? string?)
> ssl? : (or/c boolean? ssl-client-context? symbol?) = #f
> port : (between/c 1 65535) = (if ssl? 443 80)

Uses hc to connect to host on port port using SSL if ssl? is not #f (using ssl? as an argument to ssl-connect to, for example, check certificates.)

If hc is live, the connection is closed.

> > procedure
> > (http-conn-open |  | host |  |  |  |
> > | [ | #:ssl? ssl? |  |  |  |
> > |  | #:port port]) |  | → |  | http-conn?
> host : (or/c bytes? string?)
> ssl? : (or/c boolean? ssl-client-context? symbol?) = #f
> port : (between/c 1 65535) = (if ssl? 443 80)

Calls http-conn-open! with a fresh connection, which is returned.

> procedure (http-conn-close! hc) → void?
> hc : http-conn?

Closes hc if it is live.

> procedure (http-conn-abandon! hc) → void?
> hc : http-conn?

Closes the output side of hc, if it is live.

> > procedure
> > (http-conn-send! |  | hc |  |  |  |
> > |  | uri |  |  |  |
> > | [ | #:version version |  |  |  |
> > |  | #:method method |  |  |  |
> > |  | #:headers headers |  |  |  |
> > |  | #:content-decode decodes |  |  |  |
> > |  | #:data data]) |  | → |  | void?
> hc : http-conn-live?
> uri : (or/c bytes? string?)
> version : (or/c bytes? string?) = #"1.1"
> method : (or/c bytes? string? symbol?) = #"GET"
> headers : (listof (or/c bytes? string?)) = empty
> decodes : (listof symbol?) = '(gzip)
> data : (or/c false/c bytes? string?) = #f

Sends an HTTP request to hc to the URI uri using HTTP version version the method method and the additional headers given in headers and the additional data data.

If headers does not contain an Accept-Encoding header, then a header indicating that encodings from decodes are accepted is automatically added.

This function does not support requests that expect 100 (Continue) responses.

> > procedure
> > (http-conn-recv! |  | hc |
> > | [ | #:content-decode decodes |
> > |  | #:close? close?]) |
> | → |  |
> bytes? |  | (listof bytes?) |  | input-port?
> hc : http-conn-live?
> decodes : (listof symbol?) = '(gzip)
> close? : boolean? = #f

Parses an HTTP response from hc, while decoding the encodings listed in decodes.

Returns the status line, a list of headers, and an port which contains the contents of the response.

If close? is #t, then the connection will be closed following the response parsing. If close? is #f, then the connection is only closed if the server instructs the client to do so.

> > procedure
> > (http-conn-sendrecv! |  | hc |
> > |  | uri |
> > | [ | #:version version |
> > |  | #:method method |
> > |  | #:headers headers |
> > |  | #:data data |
> > |  | #:content-decode decodes |
> > |  | #:close? close?]) |
> | → |  |
> bytes? |  | (listof bytes?) |  | input-port?
> hc : http-conn-live?
> uri : (or/c bytes? string?)
> version : (or/c bytes? string?) = #"1.1"
> method : (or/c bytes? string? symbol?) = #"GET"
> headers : (listof (or/c bytes? string?)) = empty
> data : (or/c false/c bytes? string?) = #f
> decodes : (listof symbol?) = '(gzip)
> close? : boolean? = #f

Calls http-conn-send! and http-conn-recv! in sequence.

> > procedure
> > (http-sendrecv |  | host |
> > |  | uri |
> > | [ | #:ssl? ssl? |
> > |  | #:port port |
> > |  | #:version version |
> > |  | #:method method |
> > |  | #:headers headers |
> > |  | #:data data |
> > |  | #:content-decode decodes]) |
> | → |  |
> bytes? |  | (listof bytes?) |  | input-port?
> host : (or/c bytes? string?)
> uri : (or/c bytes? string?)
> ssl? : (or/c boolean? ssl-client-context? symbol?) = #f
> port : (between/c 1 65535) = (if ssl? 443 80)
> version : (or/c bytes? string?) = #"1.1"
> method : (or/c bytes? string? symbol?) = #"GET"
> headers : (listof (or/c bytes? string?)) = empty
> data : (or/c false/c bytes? string?) = #f
> decodes : (listof symbol?) = '(gzip)

Calls http-conn-send! and http-conn-recv! in sequence on a fresh HTTP connection produced by http-conn-open.

The HTTP connection is not returned, so it is always closed after one response, which is why there is no #:closed? argument like http-conn-recv!.

top ← prev up next →