If you just need simple HTTP operations (no chunking, no flexi-streams, etc,) then trivial-http may be what you're looking for.
Homepage: https://common-lisp.net/project/trivial-http/
Depends on: usocket
Quick assessment (2023-03-06)
Works for HTTP:
? (trivial-http:http-get "http://localhost/favicon.ico")
(200
((:SERVER . "nginx") (:DATE . "Mon, 06 Mar 2023 20:21:54 GMT")
(:CONTENT-TYPE . "image/x-icon") (:CONTENT-LENGTH . "1350")
(:CONNECTION . "close")
(:EXPIRES . "Wed, 05 Apr 2023 20:21:54 GMT")
(:CACHE-CONTROL . "max-age=2592000")
(:X-CONTENT-TYPE-OPTIONS . "nosniff") (:ACCEPT-RANGES . "bytes"))
#<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/1704) #x210143E61D>)
Doesn't work for HTTPS:
? (trivial-http:http-get "https://cliki.net/")
> Error: Failed assertion: (STRING-EQUAL TRIVIAL-HTTP::URL "http://" :END1 7)
> While executing: CCL::%ASSERTION-FAILURE, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: test the assertion again.
> Type :? for other options.
No surprise there.
trivial, MIT-LICENSE