Skip to content

luasocket 部分方法 (http)

此章节收录 luasocket(含 ssl/http 支持)常用方法,示例如下。


1. 发起网络请求 (http.request)

函数: http.request(arg)

描述: 发起 HTTP/HTTPS 请求,arg 可为字符串 URL 或一个表,表中可指定更详细的请求参数(method、headers、sink、timeout 等)。

参数:

参数名类型必填说明
urlstring请求地址
methodstringHTTP 方法(GET/POST)
headerstable请求头表
chunkedboolean是否使用分块传输编码
versionnumberHTTP 协议版本,默认为 1.1
keepAliveboolean是否保持连接,默认为 false
proxytable包含代理服务器的信息,包括代理类型("http"或"ftp")、地址等
proxyCredstable包含代理服务器的认证信息(如用户名和密码)
cookiestring要发送的 Cookie
norequestheadersboolean是否不发送请求头,默认为 false
requestheaderstable包含自定义的请求头信息
sinkfunction/table响应输出处理(如 ltn12.sink.table
timeoutnumber超时时间(秒)
sslverifyboolean是否验证 SSL 证书

返回值:

返回值类型说明
numberHTTP 响应状态码(成功时,如 200、404 等)
stringHTTP 响应状态码对应的文本描述
table服务器返回的 HTTP 头信息,是一个包含各种头字段的表
string服务器的响应主体内容
nil, string失败时返回 nil 和错误信息

示例:

lua
local https = require("ssl.https")
local ltn12 = require("ltn12")

local url = "http://www.baidu.com/"
local responseBody = {}

local _, status, _, _ = https.request{
  url = url,
  method = "GET",
  protocol = "tlsv1_2",
  sink = ltn12.sink.table(responseBody)
}

if status == 200 then
  print(table.concat(responseBody))
else
  print("Request failed:", status)
end