Lua(LuaJit)cURL curl_easy_getinfo 不起作用

我正在尝试使用curl_easy_getinfo获取CURLINFO_RESPONSE_CODECURLINFO_CONTENT_TYPE信息,但两次尝试似乎都失败了。

就像在LuaJit / scanf示例中一样,我正在分配ffi.new(“ int [1]”)以获取一个元素作为指针并将其用作参数,以在保存后读取该值。

输出为(错误的旧输出):

点赞
用户1516484
用户1516484

文档中提取:

CURLINFO_RESPONSE_CODE

传递一个长型指针以接收上次收到的HTTP,FTP或SMTP响应代码。

CURLINFO_CONTENT_TYPE

传递一个指向字符指针的指针以接收已下载对象的内容类型。这是从Content-Type:字段读取的值。如果得到NULL,则表示服务器没有发送有效的Content-Type头或所使用的协议不支持此功能。

这些选项要求long*char**; 你正在传递int*char*。以下应该可以工作:

local resp = ffi.new("long[1]")  -- long*
local err  = libcurl.curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, resp)
local code = ffi.new("char*[1]") -- char**
local err2 = libcurl.curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, code)
-- get the values
resp = tonumber(resp[0])
code = ffi.string(code[0])

另外,如果那些被注释的“curl_easy_setopt”调用不起作用,则是因为您正在传递int而不是long

local vb  = ffi.new("long", 1)
local err = libcurl.curl_easy_setopt(curl, CURLOPT_VERBOSE, vb)
2014-03-18 17:15:43