0%

erlang下http请求的几种方式

游戏开发中,需要对接平台SDK
验证流程大概是:

  1. 客户端登录平台,获取authorize_code,并发送给服务端
  2. 服务端向平台验证authorize_code,同时获得user_id
  3. 服务端验证通过后进行游戏登录

验证方式有GET,POST,JSON等方式,用到的是erlanghttpc模块.

启动

1
2
inets:start(),
ssl:start().

GET方式

1
2
Url = "http://xxx.com?a=1&b=2&c=3",
httpc:request(get, {Url, []}, [{timeout, 20000}], []).

POST方式

1
2
3
Url = "http://xxx.com",
PostStr = "a=1&b=2&c=3",
httpc:request(post, {Url, [], "application/x-www-form-urlencoded", PostStr}, [{version, "HTTP/1.1"}, {timeout, 10000}], []).

JSON方式

1
2
3
4
SendData= [{"sign", MD5}],
SendJson = rfc4627:encode(to_rfc4627(SendData)),
Url = "http://xxx.com",
httpc:request(post, {Url, [], "application/json; charset=utf-8", SendJson}, [{version, "HTTP/1.1"}, {timeout, 10000}], []).

  1. Url
    在拼接字符串的时候,Url=Url_1++Url_2,生成的字符串可能是Url= [123, 123, 33, 2],使用Url = binary_to_list(list_to_binary(TmpUrl))避免;PostStr也类似,如果参数支持binary()的话,果断传递binary()。