Skip to content

luasocket 部分方法 (http) ​

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


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

函数: http.request(arg)

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

参数:

参数名类型必填说明
urlstring是请求地址
methodstring否HTTP 方法(GET/POST)
headerstable否请求头表
chunkedboolean否是否使用分块传输编码
versionnumber否HTTP 协议版本,默认为 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