[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: http response: can't read body
From: |
Chris Vine |
Subject: |
Re: http response: can't read body |
Date: |
Mon, 23 Oct 2017 13:48:41 +0100 |
On Mon, 23 Oct 2017 05:29:54 -0700
Matt Wette <address@hidden> wrote:
> > On Oct 23, 2017, at 2:36 AM, Chris Vine <address@hidden>
> > wrote:
> >
> > On Sun, 22 Oct 2017 15:25:54 -0700
> > Matt Wette <address@hidden> wrote:
> >> I'm using Guile 2.2.2 web api and I can't get the body.
> >>
> >> I'm getting a response from (http-get <query>).
> >> The (response-code resp) is 200.
> >> The value I get back from (response-body-port resp) says #t for
> >> port? and input-port?
> >>
> >> But if I try to read-char on the port I get:
> >> ERROR: In procedure get-bytevector-n!:
> >> ERROR: In procedure get-bytevector-n!: Wrong type argument in
> >> position 1 (expecting open input port): #<closed: string 106c24b60>
> >>
> >> I get the same error if I use read-response-body.
> >>
> >> What am I doing wrong?
> >>
> >> Matt
> >
> > I have only used http-get in non-streaming mode, but if you are
> > streaming with http-get as I read the documentation you do not use
> > response-body-port - that is for response objects returned by
> > read-response: instead you read the port returned by http-get as its
> > second value .
> >
> > Chris
> >
>
> Thanks. Second value is a bytevector. -- Matt
OK, then you are not doing streaming. For a non-streaming call, it's a
string if decode-body? is true (the default) and the content type is
textual, otherwise a bytevector. If you want to ensure you get a
bytevector so as to do any conversion yourself, set decode-body? to
false.