Почему я не могу отправить данные с помощью Express? - PullRequest
0 голосов
/ 13 сентября 2011
var locationJSON, locationRequest;
locationJSON = {
  latitude: 'mylat',
  longitude: 'mylng'
};
locationRequest = {
  host: 'localhost',
  port: 1234,
  path: '/',
  method: 'POST',
  header: {
    'content-type': 'application/x-www-form-urlencoded',
    'content-length': locationJSON.length
  }
};

var req;
req = http.request(options, function(res) {
  var body;
  body = '';
  res.on('data', function(chunk) {
    body += chunk;
  });
  return res.on('end', function() {
    console.log(body);
    callback(null, body);
  });
});
req.on('error', function(err) {
  callback(err);
});
req.write(data);
req.end();

С другой стороны, у меня есть сервер node.js, прослушивающий порт 1234, и он никогда не получает запрос.Есть идеи?

1 Ответ

1 голос
/ 13 сентября 2011

Вы делаете req.write(data), но, насколько я вижу, «данные» нигде не определены. Вы также устанавливаете заголовок «content-length» для locationJSON.length, который не определен, поскольку locationJSON имеет только свойства «latitude» и «longitude».

Правильно определите «данные» и измените «тип контента» и «длина контента», чтобы использовать их вместо этого.

var locationJSON, locationRequest;
locationJSON = {
  latitude: 'mylat',
  longitude: 'mylng'
};

// convert the arguments to a string
var data = JSON.stringify(locationJSON);

locationRequest = {
  host: 'localhost',
  port: 1234,
  path: '/',
  method: 'POST',
  header: {
    'content-type': 'application/json', // Set the content-type to JSON
    'content-length': data.length       // Use proper string as length
  }
};

/*
....
*/

req.write(data, 'utf8');  // Specify proper encoding for string
req.end();

Дайте мне знать, если это все еще не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...