Is httpc considered bad? Why shouldn’t I use it?

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