lua发送http请求,luajit默认没有http.lua库,需要下载并存放到luajit对应目录。
一、下载http.lua和http_headers.lua库
location = /testscript{ default_type text/plain; content_by_lua_file html/luafile/test.lua; }
vim test.lua local zhttp = require "resty.http"
1.运行后查看nginx错误日志,会提示没有http.lua文件:
2.下载http.lua和http_headers.lua库
下载页面:https://github.com/pintsized/lua-resty-http
直接下载:http_headers.lua-http.lua.rar
下载好后放入对应目录,这里的目录是:
[root@zixuephp resty]# pwd /usr/local/LuaJIT/share/luajit-2.0.5/resty git clone https://github.com/pintsized/lua-resty-http.git
重启nginx。
二、lua发送http请求代码
1.get请求
local zhttp = require "resty.http" local function http_get_client(url, timeout) local httpc = zhttp.new() timeout = timeout or 30000 httpc:set_timeout(timeout) local res, err_ = httpc:request_uri(url, { method = "GET", headers = { ["Content-Type"] = "application/x-www-form-urlencoded", } }) httpc:set_keepalive(5000, 100) httpc:close() return res, err_ end
2.post请求
local zhttp = require "resty.http" local function http_post_client(url,body,timeout) local httpc = zhttp.new() timeout = timeout or 30000 httpc:set_timeout(timeout) local res, err_ = httpc:request_uri(url, { method = "POST", body = body, headers = { ["Content-Type"] = "application/x-www-form-urlencoded", } }) httpc:set_keepalive(5000, 100) httpc:close() if not res then return nil, err_ else if res.status == 200 then return res.body, err_ else return nil, err_ end end end
--get local resp, err = http_get_client("http://zixuephp.net/index.html?name=test",3000) --post local body = {"name" = "test"} local resp, err = http_post_client("http://zixuephp.net/index.html?name=test",body,3000)