HTTPC

2019-04-02 11:43 更新

httpc库

httpc库为内部cf内部实现的一种http client, 底层基于cf内部的TCP connect与SSL connect实现.

httpc库支持http与https请求, 根据传参自动判断是否需要进行安全TCP握手连接;

httpc库支持ipv4/ipv6的ip或domain进行请求, 手写ipv6需要将ipv6地址语法加入到[]内部, 如: http://[::1]:80;

httpc库支持多种Method进行http client请求;

httpc库无需初始化即可使用, 支持设置httpc连接或请求超时设置;

httpc的全局TIMEOUT时间

全局超时时间为TIMEOUT, 默认为15秒.

httpc.get(domain, HEADER, ARGS, TIMEOUT)

get方法将会对domain发起一次http GET请求.

HEADER为一个key-value数组{[1] = key, [2] = value}, 不支持Content-Type与Content-Length等设置;

ARGS为请求参数, httpc框架将为使用者自动构建http GET 查询参数;

TIMEOUT为请求的最大超时时间(optional);

使用示例:

  local code, body = httpc.get("http://localhost:8080/api?page=1&limit=10", {{"Auth", "admin"}})
  local code, body = httpc.get("http://localhost:8080/api", {{"Auth", "admin"}}, {{'page', 1}, {'limit', 10}})
  local code, body = httpc.get("http://localhost:8080/api", {{"Auth", "admin"}}, {{'page', 1}, {'limit', 10}}, 3)

此方法有2个返回值, code为返回的http 状态码, body为response body;

当code为nil时, body为出错信息; 当code为number时请自行判断; (不支持302与301)

httpc.post(domain, HEADER, BODY, TIMEOUT)

post方法将会对domain发起一次http POST请求.

HEADER为一个key-value数组{[1] = key, [2] = value}, 不支持Content-Type与Content-Length等设置;

BODY为一个key-value数组{[1] = key, [2] = value}, Content-Type为application/x-www-form-urlencoded;

TIMEOUT为请求的最大超时时间(optional);

使用示例:

  local code, body = httpc.post("http://[::ffff:127.0.0.1]:8080/api", {{"Auth", "admin"}}, {{'page', 1}, {'limit', 10}}, 3)

此方法有2个返回值, code为返回的http 状态码, body为response body;

当code为nil时, body为出错信息; 当code为number时请自行判断; (不支持302与301)

httpc.json(domain, HEADER, JSON, TIMEOUT)

json方法将会对domain发起一次http POST请求.

HEADER为一个key-value数组{[1] = key, [2] = value}, 不支持Content-Type与Content-Length等设置;

JSON为一个json格式的字符串, 需要使用者自行进行格式化; Content-Type为application/json;

TIMEOUT为请求的最大超时时间(optional);

使用示例:

  local code, body = httpc.json("http://localhost:8080/api", {{"Auth", "admin"}}, json.encode({page=1, limit=10}))

此方法有2个返回值, code为返回的http 状态码, body为response body;

当code为nil时, body为出错信息; 当code为number时请自行判断; (不支持302与301)

httpc.file(domain, HEADER, FILES, TIMEOUT)

file方法将会对domain发起一次http POST请求.

HEADER为一个key-value数组{[1] = key, [2] = value}, 不支持Content-Type与Content-Length等设置;

FILES为一个file数组{name = name, filename = filename, file = file}; 其中file为文件内容, application/文件类型

TIMEOUT为请求的最大超时时间(optional);

使用示例:

  local code, body = httpc.file('http://localhost:8080/view', nil, {
    {name='1', filename='1.jpg', file='1', type='abc'},
    {name='2', filename='2.jpg', file='2', type='abc'},
    })

此方法有2个返回值, code为返回的http 状态码, body为response body;

当code为nil时, body为出错信息; 当code为number时请自行判断; (不支持302与301)

最后

需要注意的事:

  • httpc不会为用户解析response body;

  • 不支持重定向自行跳转, 需要使用者自行解决与判断;

  • 暂时不支持除以上API外的其它请求方法;
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号