Hi, I've tried this on macOS and I get the following (note the port type is not socket, but neither file):
scheme@(guile-user)> (open-socket-for-uri "https://blockchain.info/q/24hrprice") $7 = #<input-output: string 105b0c540> If I do the following I get an error (see below): scheme@(guile-user)> (define s (open-socket-for-uri "https://blockchain.info/q/24hrprice")) wait a bit... then: scheme@(guile-user)> (http-request "https://blockchain.info/q/24hrprice" #:port s) ice-9/boot-9.scm:1669:16: In procedure raise-exception: Bad Read-Header-Line header: #<eof> However, if I do the following: scheme@(guile-user)> (http-request "https://blockchain.info/q/24hrprice" #:port (open-socket-for-uri "https://blockchain.info/q/24hrprice")) The request works fine. So, if I do the following quickly enough: scheme@(guile-user)> (define s (open-socket-for-uri "https://blockchain.info/q/24hrprice")) scheme@(guile-user)> (http-request "https://blockchain.info/q/24hrprice" #:port s) it works fine. So it seems a timing issue. What is exactly failing and when in your case? Aleix On Sat, Jan 30, 2021 at 7:23 AM <mbcladw...@stihie.net> wrote: > > Yes it is installed. > > mbc@HP8300:~$ dpkg -s guile-gnutls > Package: guile-gnutls > Status: install ok installed > > How do I test that it is properly configured? For example I can: > > scheme@(guile-user)> (cdar (json-string->scm (utf8->string (receive > (response-status response-body) > (http-request > "https://api.blockchain.com/v3/exchange/tickers/LTC-USD") > response-body)))) > $1 = 134.3 > > Thanks > Mortimer > > Quoting Aleix Conchillo Flaqué <aconchi...@gmail.com>: > > > Hi, > > > > This is just a guess but do you have GnuTLS Guile bindings installed? You > > are using https on the first one. > > > > In Debian I believe it's guile-gnutls. > > > > Best, > > > > Aleix > > > > > > On Sat, Jan 30, 2021, 5:38 AM <mbcladw...@stihie.net> wrote: > > > >> > >> Hi, > >> On Debian 10, Guile 3.0.4 I need to create a socket: > >> > >> mbc@HP8300:~$ guile > >> GNU Guile 3.0.4 > >> Copyright (C) 1995-2020 Free Software Foundation, Inc. > >> Enter `,help' for help. > >> scheme@(guile-user)> (use-modules (web client)) > >> scheme@(guile-user)> (open-socket-for-uri > >> "https://blockchain.info/q/24hrprice") > >> $1 = #<input-output: file 7f09b60b0e00> > >> scheme@(guile-user)> (open-socket-for-uri "http://localhost:3000/123") > >> $2 = #<input-output: socket 14> > >> scheme@(guile-user)> > >> > >> A local http looks good - returns an integer socket. > >> A remote https uri returns file 7f09b60b0e00 which is rejected by > >> downstream functions requiring a port/integer e.g. (http-get .... > >> #:port ) > >> > >> I get the same results on Guile 2.2.7 in a Guix protected environment. > >> What am I doing wrong - how do I get an integer returned? > >> Thanks > >> Mortimer > >> > >> > >> > > >