IIRC most of complaints about httpc
were about interface. request/4,5
has that weird interface where your Request
has to be either 2-tuple or 4-tuple, depending whether your request contains a body or not. If you want to wrap all your htttp calls into some function you always have to write something like:
case has_body(Method) of %% note, has_body is not exported anywhere in inets
true ->
{Url, Headers, Body, Mime};
false ->
{Url, Headers}
end
I’ve been there couple of times. Example when you do stuff like this is when you’re just forwarding HTTP requests.
There are also 2 different types of answers, of which 1.st is just the subset of the 2.nd:
%% 1st
{StatusCode, HttpBodyResult}
%% 2nd
{StatusLine, [HttpHeader], HttpBodyResult}
Its just a waste of effort to match both every time and I don’t remember if there is a reason when the first one is returned. IMO there should be just {StatusCode, [HttpHeader], HttpBodyResult}
@tsloughter mentioned couple more stuff here
Anyways, I’m still using httpc, but with a single-module wrapper around it that utilizes map interface for requests and responses.
EDIT: there is a small problem with standalone mode