【问题标题】:Node.js: cannot get json object on localhostNode.js:无法在 localhost 上获取 json 对象
【发布时间】:2014-02-10 23:12:27
【问题描述】:

我有一个 android 应用程序,它将发送一个 json 到我的服务器,在那里我将有一个 node.js express 应用程序。同时,我想在我的本地主机上测试它。

在我的 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'));
});

在我的终端中,我运行 node app.js,得到的只是“Express 服务器正在侦听端口 8080”的答案。没有别的了。

当我打开浏览器并输入时

http://localhost:8080/ReceiveJson

我得到“{}”作为答案。 在我的终端中,我得到了相同的答案。

我需要做什么才能收到 json? 谢谢

【问题讨论】:

    标签: javascript android json node.js express


    【解决方案1】:

    那是因为您使用 req.body 响应:

     res.send(req.body);
    

    它下面的代码永远不会被调用,因为你已经响应了:

    res.json(req.body);
    res.send("ok");
    

    因为您使用的是网络浏览器,所以正文中没有发送任何内容,因为它是一个 get 请求,并且正文中不会有任何内容用于 get 请求,因此您得到一个空的 json 对象,因此是 {}。

    如果您将代码更改为:

    app.get('/ReceiveJson', function(req, res) {
        res.send("ok");
    });
    

    然后,当您在浏览器中浏览时,您会得到响应“ok”

    如果您希望发布或放入您的快递服务器,那么您需要使用 app.post 或 app.put。我注意到您正尝试使用 Android 设备为您已经编写的应用程序发送 JSON。我强烈建议使用 Fiddler 或其他东西进行测试,只要确保当您将 JSON 发送到您的快速应用程序时,您使用的是标头:

    Content-Type: application/json
    

    编辑:

    您的 JSON 可能无法正常工作,因为您没有使用正文解析器。尝试在 app.listen 之前将其插入代码中

    app.configure(function(){
        app.use(express.bodyParser());
    })
    

    【讨论】:

    • 嗨。它现在正在工作,我在终端上得到了结果。但是我仍然收到一个带有代码console.log(req.body)的空json。在客户端(android)上,我知道 json 已完美发送。我仍然不确定出了什么问题。感谢您的帮助
    • 点赞并标记正确?我添加了一些代码来帮助你处理你的 body json
    • 现在我面临另一个问题:我创建了一个变量:var globalId = 0;然后,我将此 globalId 转换为 1,并在控制台中显示为 1。在我创建 client.set("id", globalId) 之后。当我执行 client.get("id", function(err, res { console.log(res); }); 时,我得到的值是 0 而不是 1 作为转换和调试过的值。为什么我不能设置值来自在进入 redis 之前在代码内部更改的局部变量?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2016-05-31
    • 2018-08-27
    相关资源
    最近更新 更多