Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

http post request erlang

Tags:

http

erlang

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.

like image 942
user601836 Avatar asked May 30 '11 07:05

user601836


2 Answers

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, [], []).
like image 60
Adam Lindberg Avatar answered Nov 03 '22 02:11

Adam Lindberg


Body = "name=<<name>>&pass=<<pass>>",
httpc:request(post, {Url, [], "application/x-www-form-urlencoded", Body}, [], []).
like image 39
aposto Avatar answered Nov 03 '22 01:11

aposto