如何连接我的移动应用程序(用lua写的)和我的服务器(用node.js写的)?

我是lua和node js的新手,我试图将我正在使用的移动应用连接到服务器。 问题是它连接到服务器,但我想传递的数据会丢失或不能到达服务器。 对我在做什么有什么不妥的想法?

这是我连接到服务器的lua代码

local function store () local headers = {} headers["Content-Type"] = "application/x-www-form-urlencoded" headers["Accept-Language"] = "en-US" local body = "fname="..fname local params = {} params.headers = headers params.body = body print(body) print(headers) print(params.body) print(params.headers) network.request( "http://192.168.56.2:8888", "POST", networkListener, params ) end local function networkListener( event ) if ( event.isError ) then print( "Network error!") else print ( "RESPONSE: " .. event.response ) local serializedString = json.decode( event.response ) print(serializedString) --data = json.decode(serializedString) --print(serializedString.student[1]) end end 

`

这是我试图发送请求的简单服务器的代码

 var express = require('express'); var app = express(); var morgan = require('morgan'); var consolidate = require('consolidate'); var bodyparser = require('body-parser'); var parser = require('luaparse'); //////////////////////////////////////////////////////////////////////////////// app.listen(8888,function() {console.log('Server Running!');}); //////////////////////////////////////////////////////////////////////////////// app.set('views', __dirname + '/views'); app.engine('html', consolidate.nunjucks); app.use(morgan('dev')); app.use(bodyparser.urlencoded({ extended: true })); app.use('/static', express.static(__dirname + '/static')); //////////////////////////////////////////////////////////////////////////////// app.get('/', function(req, res) { res.render('index.html'); }); app.post('/', function(req, res) { var fname = req.fname; var lname = req.body.lastname; console.log("it went in"); console.log(req.body.fname); console.log(req.body); console.log(req.header); console.log("nahuman"); res.render('index.html'); }); //////////////////////////////////////////////////////////////////////////////// 

你的代码是好的,除了看起来你的networking监听器networkListener()你的store()函数之后声明的。 Lua无法访问正在执行的内容, 除非它是前向声明的。 所以,lua没有find监听者,即使有错误也不会被调用。 这个函数应该在你的store()函数之前声明,以便它可以像下面这样访问它:

 local function networkListener(event) ... end local function store() ... end 

这个,或者你可以提前申报,有点像这样:

 local networkListener = nil -- This forward declaration local function store() ... end networkListener = function() ... end 

这里是关于lua前锋宣言的更多信息 。 我知道这是因为你提供了我们的实际代码顺序的截图。 尝试解决scheme后,您可以随时使用debugging器查看是否一切正常。 我推荐IDE zerobrane工作室 。