Http Lua将数据发布到粒子(以前称为火花)光子时的索引nil值
我表哥和我一直在试验他的新光子芯片,我们决定发挥创意,使用ComputerCraft(Minecraft mod)和一些Lua代码来驱动他制造的汽车。不幸的是,每次我们给出一个输入,它都会索引一个nil值;我们不确定这是因为http.post代码错误还是我们不知道的原因。。。有什么想法吗Http Lua将数据发布到粒子(以前称为火花)光子时的索引nil值,http,lua,minecraft,photon,computercraft,Http,Lua,Minecraft,Photon,Computercraft,我表哥和我一直在试验他的新光子芯片,我们决定发挥创意,使用ComputerCraft(Minecraft mod)和一些Lua代码来驱动他制造的汽车。不幸的是,每次我们给出一个输入,它都会索引一个nil值;我们不确定这是因为http.post代码错误还是我们不知道的原因。。。有什么想法吗 URL = "https://api.particle.io/v1/devices/456456456456/updateMotors(" token = "access_token=123456789" ro
URL = "https://api.particle.io/v1/devices/456456456456/updateMotors("
token = "access_token=123456789"
robotState = 0
while true do
os.pullEvent("redstone")
if((redstone.getInput("bottom") == true) and (robotState ~= 0)) then
robotState = 0
returnData = http.post(URL .. "\"0\"" .. ")", token)
returnData.close()
.....
end
end
(代码的其余部分看起来与此相同,因此省略)
我们试图将字符串传递给一个光子函数,该函数将驱动电机,但每次我们创建一个红石信号时,它都会显示“drive:11:尝试索引?(一个nil值)”——但只有当光子连接时才会这样做。我建议添加一个
打印(tostring(returnData))
并让我们知道打印的内容
returnData很可能为零
以下是有关HTTP句柄的一些信息:
close
是一个有效的函数。这与您的错误一起表明returnData
为nil,失败时由http.post
返回
故障排除步骤
因此,正如我前面提到的,您需要在调用returnData
上的tostring
时添加一个print语句。它应该返回一个句柄,您可以对该句柄执行returnData.readAll()
on以从请求中获取信息。由于这不起作用,很可能是因为请求失败(当http.post
failes时,返回nil)
为了找出它失败的原因,我建议打印出它正在使用的URL并通过浏览器访问它。我还注意到您正在使用令牌
作为post数据。也许令牌无效
问题也可能是由于令牌的传递方式。与其将其作为post数据传递,不如通过URL栏(PhP GET)传递,如下所示:
returnData=http.post(URL.“0\”?.token)
这将转换为”https://api.particle.io/v1/devices/456456456456/updateMotors(\“0\”)访问令牌=123456789“
我没有使用这个API的经验,但是updateMonitor中的零应该作为字符串传递吗?如果是这样,那么URL也可能需要与URL兼容。使用以下命令检查其是否兼容:
我希望你能解决这个问题。第19行是哪一行?@Colonelthirty抱歉,我打错了;我是说11。