2014-02-10 6 views
-1

У меня есть приложение для Android, которое отправит json на мой сервер, где у меня будет приложение node.js express. Между тем, я хочу проверить его на своем локальном хосте.Node.js: не удается получить объект json на localhost

На мой андроид код, который я отправить 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 и я получаю только ответ «сервер Экспресса прослушивает порт 8080». Ничего больше.

Когда я иду в браузер и положить

http://localhost:8080/ReceiveJson 

я получаю "{}" в качестве ответа. В моем терминале я получаю тот же ответ.

Что мне нужно сделать, чтобы получить json? Благодаря

ответ

0

Это потому, что вы отвечаете с req.body:

res.send(req.body); 

Код ниже него никогда не вызывается, потому что вы уже ответили:

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

Поскольку вы используете Интернет браузера, в теле ничего не отправляется, потому что это запрос на получение, и в запросе get не будет ничего в теле, поэтому вы получите пустой json-объект, следовательно {}.

Если вы измените код:

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

Тогда при просмотре там в вашем браузере, вы получите ответ «ОК»

Если вы хотите опубликовать или поставить на свой экспресс-сервер то вам нужно использовать app.post или app.put. Я заметил, что вы пытаетесь отправить JSON с Android-устройством для приложения, которое вы уже написали. Я настоятельно рекомендую использовать Fiddler или что-то, чтобы проверить с, просто убедитесь, что когда вы посылаете JSON в ваш экспресс приложение, которое вы используете заголовок:

Content-Type: application/json 

EDIT:

Ваш JSON может не работать из-за вы не используете синтаксический анализатор тела. Попробуйте вставить это в свой код до app.listen

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

Привет. Сейчас он работает, я получаю результат на моем терминале. Но я все еще получаю пустой json с кодом console.log (req.body). На стороне клиента (android) я получаю, что json был отлично отправлен. Я все еще не уверен, что пошло не так. Спасибо за вашу помощь – user3216280

+0

Упростить и отметить правильно? Я добавил код, который поможет вам с вашим телом json – oconnecp

+0

Теперь я столкнулся с этой другой проблемой: я создал переменную: var globalId = 0; Чем я преобразую этот globalId в 1, а в консоли он показывает 1. После того, как я создам client.set («id», globalId). Когда я делаю client.get («id», function (err, res {console.войти (RES); }); Я получаю значение 0, а не 1 как преобразованное и отлаженное ранее. Почему я не могу установить значение из локальной переменной, которая была изменена внутри кода, прежде чем переходить на redis? – user3216280

Смежные вопросы