我有一个Android应用程序,它将发送一个json到我的服务器,我将有一个node.js表达应用程序。同时,我想在我的localhost上测试它。
在我的android代码上,我将json发送到:
new HttpAsyncTask().execute("http://10.0.2.2:8080/ReceiveJson");
此代码由按钮触发,工作正常。
然后在我的app.js文件中,我有以下代码:
var express = require('express')
, http = require('http');
var app = express();
app.set('port', process.env.PORT || 8080);
app.get('/ReceiveJson', function(req, res) {
console.log(req.body);
res.send(req.body);
res.json(req.body);
res.send("ok");
});
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
在我的终端中,我运行节点app.js,我得到的答案是“Express服务器正在侦听端口8080”。没别了。
当我进入浏览器并输入
时http://localhost:8080/ReceiveJson
我得到“{}”作为答案。 在我的终端,我得到了相同的答案。
接收json需要做什么? 感谢
答案 0 :(得分:0)
那是因为你正在回复req.body:
res.send(req.body);
下面的代码永远不会被调用,因为你已经回复了:
res.json(req.body);
res.send("ok");
因为您正在使用Web浏览器,所以在正文中没有任何内容被发送,因为它是一个get请求,并且正文中没有任何内容可用于get请求,因此您获得了一个空的json对象,因此{}。
如果您将代码更改为:
app.get('/ReceiveJson', function(req, res) {
res.send("ok");
});
然后当您在浏览器中浏览时,您将收到“确定”的响应
如果您要发布或发送到快速服务器,则需要使用app.post或app.put。我注意到您正在尝试使用Android设备为您已编写的应用程序发送JSON。我强烈建议使用Fiddler或其他东西进行测试,只需确保当您将JSON发送到Express应用程序时使用标题:
Content-Type: application/json
编辑:
您的JSON可能无法正常工作,因为您没有使用正文解析器。尝试在app.listen
之前在代码中插入此内容app.configure(function(){
app.use(express.bodyParser());
})