阅读模式:

lua发送http请求

查看:20285  回复:4  类型:  来源:php自学网  标签 nginx lua

        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文件:

no http.lua file.png

        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

http.lua downloads.png

http.lua file show.png

    重启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)
分享到:
0 0
最新评论:
阿巴  发表于 2019-05-25 15:31:07  中国浙江省
沙发
我这里local ngx = ngx 这行出错了,好像是没有ngx 这个是要怎么操作 回复
站长 2019-05-27 16:56 中国广东省深圳市南山区
是不是你的模块没安装好 回复
Clown  发表于 2月前  四川省成都市移动
板凳
local httpc = zhttp.new()这里报错“/opt/openresty/lualib/resty/http.lua:133: API disabled in the context of log_by_lua* stack traceback:”。怎么解决啊?困扰很久了。。 回复
站长 2020-08-03 11:46 中国广东深圳
改了resty.http模块代码?试试content_by_lua_file看下。没有遇到过这个问题 回复
回复:[主题]
表情:
 提交评论
清空

发布评论:


登录:
  表情:
提交