Skip to content

httpc request twice,the second time return err of closed #299

Open
@Jhq9

Description

@Jhq9

`
-- 引入必要的Lua库
local http = require("resty.http")

-- 创建全局的连接池
local httpc_pool = {}
-- 获取参数变量url
local url = ngx.var.arg_url

if not url then
ngx.status = ngx.HTTP_BAD_REQUEST
ngx.say("Missing 'url' parameter")
ngx.exit(ngx.HTTP_BAD_REQUEST)
end

-- 从连接池中获取连接
local httpc = httpc_pool[url]
if not httpc then
-- 连接池中没有可用的连接,创建一个新的连接
httpc = http.new()
httpc_pool[url] = httpc
end

-- 发起HTTP请求获取URL的响应
local res, err = httpc:request_uri(url, {
method = "GET",
ssl_verify = false,
headers = {
["User-Agent"] = "Mozilla/5.0 (compatible; Lua-resty-http/0.15; +https://github.com/pintsized/lua-resty-http)",
}
})

if not res then
ngx.status = ngx.HTTP_INTERNAL_SERVER_ERROR
ngx.say("Failed to request meiya image URL: ", err)
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end

-- 获取响应的文本内容
local body = res.body

-- 请求并返回图片数据
res, err = httpc:request_uri("body ", {
method = "GET",
ssl_verify = false,
headers = {
["User-Agent"] = "Mozilla/5.0 (compatible; Lua-resty-http/0.15; +https://github.com/pintsized/lua-resty-http)",
}
})

if not res then
ngx.log(ngx.ERR, "request err.", err)
ngx.status = ngx.HTTP_INTERNAL_SERVER_ERROR
ngx.say('请求失败!',err)
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end

ngx.header["Content-Type"] = res.headers["Content-Type"]
ngx.print(res.body)
ngx.flush(true)
`

this is my lua script; when i modify body as url constant, the second reuqest is all right. when body is a variable, second request's res is nil and err msg is closed.

can anyone figure out code's mistake?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions