Hi, Gabriel. Thanks for the report. Also, http-get doesn't support TLS/SSL, and silently converts requests to HTTP.
I'm afraid that it's unlikely that this will be fixed soon. In the meantime, I offer you the code below, which I use to work around this problem. It calls curl in a subprocess. Despite the extra overhead, it is fast enough for most projects. (define (curl-prepare-headers alist) (append-map (lambda (h) (list "--header" (format #false "~A: ~A" (car h) (cdr h)))) alist)) (define (curl-http-delete headers url) (call-with-output-string (lambda (port) (assert (zero? (run-synchronous-subprocess "/usr/bin/curl" (cons* "--request" "DELETE" "--silent" "--url" url (curl-prepare-headers headers)) 'output port)) "Error in HTTP DELETE." url)))) (define curl-http-get (case-lambda ((headers url) ;; This fails if a non-NFC string is returned. (call-with-output-string (lambda (port) (assert (zero? (run-synchronous-subprocess "/usr/bin/curl" (cons* "--location" "--silent" "--url" url (curl-prepare-headers headers)) 'output port)) "Error in HTTP GET." url)))) ((headers url pathname) (assert (zero? (run-synchronous-subprocess "/usr/bin/curl" (cons* "--location" "--output" (enough-namestring pathname) "--silent" "--url" url (curl-prepare-headers headers)))) "Error in HTTP GET." url)))) (define (curl-http-put data headers url) (call-with-output-string (lambda (port) (assert (zero? (run-synchronous-subprocess "/usr/bin/curl" (cons* "--silent" "--upload-file" "-" "--url" url (curl-prepare-headers headers)) 'input (open-input-string data) 'output port)) "Error in HTTP PUT." url))))