sending a json body with http:request

Magnus Henoch <>
Thu Feb 4 12:18:06 CET 2010


Hynek Vychodil <> writes:

>>> The http request body can be a string or a binary, so no need to call
>>> binary_to_list.
>>>
>
> I think http:request should accept iolist and you don't need neither
> binary_to_list neither iolist_to_binary.

You'd think so :) In the hope of saving someone else the time I spent
debugging this (probably more than once), I'll let you know that
http:request accepts only flat strings and binaries, _not_ iolists.  It
seems to work fine, and the data is actually sent, but the
Content-Length header is calculated using length/1, not iolist_size/1,
so the server will not see the entire body.

(For example, length([$f, $o, $o, "bar"]) is 4, while iolist_size of the
same is 6.  You want the latter.)

Generally, the inets http client increases the amount of suffering in
the world.  You'd be better off using lhttpc instead:
http://bitbucket.org/etc/lhttpc/wiki/Home

-- 
Magnus Henoch, 
Erlang Solutions
http://www.erlang-solutions.com/
---------------------------------------------------

---------------------------------------------------

WE'VE CHANGED NAMES!

Since January 1st 2010 Erlang Training and Consulting Ltd. has become ERLANG SOLUTIONS LTD.

www.erlang-solutions.com



More information about the erlang-questions mailing list