diff --git a/net-doc/net/scribblings/http-client.scrbl b/net-doc/net/scribblings/http-client.scrbl index 9b8d2bccd8..f32ed1a4b0 100644 --- a/net-doc/net/scribblings/http-client.scrbl +++ b/net-doc/net/scribblings/http-client.scrbl @@ -78,9 +78,11 @@ Closes the output side of @racket[hc], if it is live. void?]{ Sends an HTTP request to @racket[hc] to the URI @racket[uri] using -HTTP version @racket[version] the method @racket[method] and the +HTTP version @racket[version], the method @racket[method], and the additional headers given in @racket[headers] and the additional data -@racket[data]. +@racket[data]. If @racket[method] is @racket[#"HEAD"] (or +@racket["HEAD"] or @racket['HEAD]), provide the same @racket[method] +when calling @racket[http-conn-recv!] to avoid attempting to receive content. If @racket[data] is a procedure, it will be called once with a procedure of one argument, which is a string or @@ -102,11 +104,13 @@ This function does not support requests that expect @defproc[(http-conn-recv! [hc http-conn-live?] [#:content-decode decodes (listof symbol?) '(gzip)] + [#:method method (or/c bytes? string? symbol?) #"GET"] [#:close? close? boolean? #f]) (values bytes? (listof bytes?) input-port?)]{ -Parses an HTTP response from @racket[hc], while decoding the encodings -listed in @racket[decodes]. +Parses an HTTP response from @racket[hc] for the method +@racket[method] while decoding the encodings listed in +@racket[decodes]. Returns the status line, a list of headers, and an port which contains the contents of the response. @@ -116,7 +120,8 @@ following the response parsing. If @racket[close?] is @racket[#f], then the connection is only closed if the server instructs the client to do so. -} +@history[#:changed "6.1.1.6" @elem{Added the @racket[#:method] argument.}]} + @defproc[(http-conn-sendrecv! [hc http-conn-live?] [uri (or/c bytes? string?)] [#:version version (or/c bytes? string?) #"1.1"] diff --git a/net-test/tests/net/http-client.rkt b/net-test/tests/net/http-client.rkt index b41bd1e78d..27a1d6739e 100644 --- a/net-test/tests/net/http-client.rkt +++ b/net-test/tests/net/http-client.rkt @@ -102,6 +102,7 @@ #:data body) (begin0 (hc:http-conn-recv! c + #:method method #:close? #t) (check-equal? #f (hc:http-conn-live? c)))) raw ereq estatus eheaders econtent)) @@ -256,4 +257,10 @@ #"PUT / HTTP/1.1\r\nHost: localhost:REDACTED\r\nUser-Agent: Racket/REDACTED (net/http-client)\r\nAccept-Encoding: gzip\r\nTransfer-Encoding: chunked\r\nConnection: close\r\n\r\n0\r\n\r\n" #"HTTP/1.1 200 OK" '() + #""] + + ["HEAD" #f "HTTP/1.1 200 OK\r\n\r\n" + #"HEAD / HTTP/1.1\r\nHost: localhost:REDACTED\r\nUser-Agent: Racket/REDACTED (net/http-client)\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n" + #"HTTP/1.1 200 OK" + '() #""]))