从Android调用节点REST服务

时间:2014-10-20 21:29:59

标签: android node.js mongodb rest curl

我已经编写了一个REST post方法,如我的其他question的答案所述。

尝试使用curl命令后,服务按预期工作

curl -X POST -H "Content-Type: application/json" -d '{"username":Tom,"mail":"xyz@123.com"}' http://localhost:3080/accounts/put/ 

现在我已经在VPS中托管了节点应用程序,以便可以通过互联网访问它。可以访问其他获取服务并正确填充数据。

如果我尝试执行相同的curl命令,则会抛出错误,如下所示

curl -X POST -H "Content-Type: application/json" -d '{"username":Tom,"mail":"xyz@123.com"}' http://MyServerIP:3080/accounts/put/

错误是

 Cannot call method 'insert' of undefined
        at Object.app.get.db.collection.find.accounts [as handle] (/home/balaaagi/nodeapps/meanservice/server.js:62:18)
at next_layer (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/route.js:103:13)
    at Route.dispatch (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/route.js:107:5)
    at c (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:195:24)
    at param (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:268:14)
    at param (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:280:16)
    at Function.proto.process_params (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:296:3)
    at next (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:189:19)
    at next (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:166:38)
    at next (/home/balaaagi/nodeapps/meanservice/node_modules/express/lib/router/index.js:166:38)

当我尝试从Android应用程序调用POST时,我也面临与EntityUtils.toString(resp.getEntity())的输出类似的错误 在VPS中托管服务时,我的JSON对象是否未通过/出错?

1 个答案:

答案 0 :(得分:0)

localhost curl命令成功,因为每次修改server.js时我都重新启动了节点。 在我的VPS中,我一直用它来连续运行节点。当将最新的server.js部署到我的VPS中时,我错过了重启节点。因此,这个问题是因为它引用旧代码而引起的。

此外,我在VPS中使用killall node终止了所有节点,这会杀死服务器中所有名为node的任务。 然后永远重新启动我的节点。 REST Post既可以从curl也可以从我的Android应用程序中运行。在数据库成功插入数据库时​​,与DB交叉检查。