function _M.request_uri(self, uri, params, proxy) -- 添加了一个代理参数,table结构,可以传入HTTP代理的host和port
if not params then params = {} end
local parsed_uri, err = self:parse_uri(uri, false)
if not parsed_uri then
return nil, err
end
local scheme, host, port, path, query = unpack(parsed_uri)
if not params.path then params.path = path end
if not params.query then params.query = query end
local conn_host,conn_port = host,port
-- 如果传递了proxy参数,则连接代理服务器发送http请求
if proxy and proxy.host then
conn_host = proxy.host
if not proxy.port then
conn_port = 80
else
conn_port = proxy.port
end
end
local c, err = self:connect(conn_host, conn_port)
if not c then
return nil, err
end
if scheme == "https" then
local verify = true
if params.ssl_verify == false then
verify = false
end
local ok, err = self:ssl_handshake(nil, host, verify)
if not ok then
return nil, err
end
end
local res, err = self:request(params)
if not res then
return nil, err
end
local body, err = res:read_body()
if not body then
return nil, err
end
res.body = body
local ok, err = self:set_keepalive()
if not ok then
ngx_log(ngx_ERR, err)
end
return res, nil
end
本人搞Java的,对于lua是初学,cosocket啊什么的不是很懂,靠直觉感觉这样应该可行,但是也不能确定,自己测试下来请求和响应是没啥问题的,但是还是不放心。