说说luasocket http的使用
luasocket包中的socket.http比较简单, 关于它的使用方法,网上内容也比较少, 常用的方法是GET和POST比较多。。。
GET的话, 可以直接传入URL地址,例如这样:
local res, code = http.request("http://127.0.0.1/")
返回的2个参数中, res是http body的内容, 也就是请求网页的内容, code是http状态码, 返回200的话就表示正常返回。
也可以这样:
local response_body = {}
local res, code = http.request({
url = "http://127.0.0.1/",
sink = ltn12.sink.table(response_body)
})
如果传入的是table的话, 就需要用一个容器来接收http body的内容, 也就是sink那个参数
POST的话就要这样:
local response_body = {}
local post_data = 'asd';
res, code = http.request{
url = "http://127.0.0.1/post.php",
method = "POST",
headers =
{
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = #post_data,
},
source = ltn12.source.string('data=' .. post_data),
sink = ltn12.sink.table(response_body)
}
这里注意记得method传入POST, 因为默认是GET, 然后就是要注意下headers参数, 由一个table组成, key为header, value为header内容, 最后注意的就是source参数, 这里是填入POST的参数, 多个数据的情况用&隔开, 例如”data1=a&data2=b”
POST这里的source和sink参数分别是由ltn2.source和ltn12.sink组成, 除了我举例的string和table, 还有file类型。。。
想了解更多? 看看拓展阅读: http://w3.impa.br/~diego/software/luasocket/ltn12.html