http post request erlang

2020-07-10 10:16发布

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

标签: http erlang
2条回答
叛逆
2楼-- · 2020-07-10 11:12

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, [], []).
查看更多
甜甜的少女心
3楼-- · 2020-07-10 11:13
Body = "name=<<name>>&pass=<<pass>>",
httpc:request(post, {Url, [], "application/x-www-form-urlencoded", Body}, [], []).
查看更多
登录 后发表回答