http post request erlang

2020-07-10 10:20发布

问题:

I have a couple of functions that perform HTTP POST/GET/HEAD requests.

For the POST request I use this:

  http:request(post, {Url, [], ContentType, Body}, [], []).

While for the HEAD/GET I use:

  http:request(Method, {Url, []}, [], [])

How can I write this two calls in a unique one? POST request has those two additional variables with respect to GET/HEAD request. I tried with empty lists but I got:

  ** exception error: no function clause matching

Thank you very much

回答1:

To use the call to httpc only once, you need to extract the Request tuple from the call because that's what's unique between the methods as you use them:

post(URL, ContentType, Body) -> request(post, {URL, [], ContentType, Body}).
get(URL)                     -> request(get,  {URL, []}).
head(URL)                    -> request(head, {URL, []}).

request(Method, Request) ->
    httpc:request(Method, Request, [], []).


回答2:

Body = "name=<<name>>&pass=<<pass>>",
httpc:request(post, {Url, [], "application/x-www-form-urlencoded", Body}, [], []).


标签: http erlang