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,它永远不会收到请求。有什么想法吗?
答案 0 :(得分:1)
您正在进行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();
如果这仍然不起作用,请告诉我。