我是LUA编码的新手并且遇到了第一个问题:
我尝试创建一个http.get请求,并希望将内容转换为变量。这是我的代码:
local API_KEY = ""
function getAPIKey()
local key
http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
function(code, data)
if(code < 0) then
print("HTTP request failed")
else
key = data
end
end)
print(key)
end
当我尝试使用此代码时,我会收到错误,因为可变API_KEY
为nil
。
有人有想法吗?
答案 0 :(得分:0)
也许问题1:你没有收集http.get()返回的正文,因此打印一个空的局部变量。
也许问题2:API_KEY
在您的代码中未使用,因此不会对任何内容产生任何影响。但是,API_KEY = ""
(删除本地)使其全局化可能会对已加载的某个库产生影响 - 在这种情况下,无论您从哪里获得http.get。如果是这种情况,您可能需要查找文档/从API获取API密钥(通常用于防止任何人使用API)。
也许问题3:我有一个问题,在匿名函数中有code < 0
。通常http会返回code > 0
(未签名):200
表示正常,404
表示未找到,403
表示禁止,以及300
中的任何内容39; s与重定向有关,这可能需要你做更多的工作。有关http代码参考,请参阅this wiki。也许通过该函数返回的数据实际上是预期的数据。如果是这种情况(并且您已通过错误代码知道),那么我会删除key = data
的{{1}}。
可能的解决方案1:
print(data)
可能的解决方案2:
- local API_KEY = ""
+ API_KEY = ""
调试解决方案1:
function getAPIKey()
- local key
- http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
+ local key = http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
function(code, data)
if(code < 0) then
print("HTTP request failed")
else
key = data
end
end)
print(key)
end