通过POST请求将数据从node.js服务器发送到node.js服务器

我正在尝试通过一个POST请求将数据从一个node.js服务器发送到另一个node.js服务器。我在“客户端” node.js中执行的操作如下:

var options = {

host: 'my.url',

port: 80,

path: '/login',

method: 'POST'

};

var req = http.request(options, function(res){

console.log('status: ' + res.statusCode);

console.log('headers: ' + JSON.stringify(res.headers));

res.setEncoding('utf8');

res.on('data', function(chunk){

console.log("body: " + chunk);

});

});

req.on('error', function(e) {

console.log('problem with request: ' + e.message);

});

// write data to request body

req.write('data\n');

req.write('data\n');

req.end();

该块或多或少是从node.js网站获取的,因此应该正确。我唯一看不到的是如何在options变量中包括用户名和密码以进行实际登录。这是我处理服务器node.js中的数据的方式(我使用express):

app.post('/login', function(req, res){

var user = {};

user.username = req.body.username;

user.password = req.body.password;

...

});

如何将这些usernamepassword字段添加到options变量中以使其登录?

谢谢

回答:

发布数据仅是发送一个查询字符串(就像您在后面添加URL一样?)。

这需要Content-TypeContent-Length标头,因此接收服务器知道如何解释传入的数据。(*)

var querystring = require('querystring');

var http = require('http');

var data = querystring.stringify({

username: yourUsernameValue,

password: yourPasswordValue

});

var options = {

host: 'my.url',

port: 80,

path: '/login',

method: 'POST',

headers: {

'Content-Type': 'application/x-www-form-urlencoded',

'Content-Length': Buffer.byteLength(data)

}

};

var req = http.request(options, function(res) {

res.setEncoding('utf8');

res.on('data', function (chunk) {

console.log("body: " + chunk);

});

});

req.write(data);

req.end();


(*)发送数据需要正确设置Content-Type标头,即application/x-www-form-

urlencoded标准HTML表单将使用的传统格式。

application/json以完全相同的方式发送JSON()很容易;只是JSON.stringify()事先的数据。

URL编码的数据支持一种结构级别(即键和值)。在交换具有嵌套结构的数据时,JSON很有用。

最重要的是:服务器必须能够解释有问题的内容类型。它可能是text/plain或其他任何东西;如果接收服务器按原样理解数据,则无需转换数据。

application/json;

charset=Windows-1252如果您的数据使用不寻常的字符集(例如,不是UTF-8),请添加一个字符集参数(例如)。例如,如果您从文件中读取它,则可能有必要。

以上是 通过POST请求将数据从node.js服务器发送到node.js服务器 的全部内容, 来源链接: utcz.com/qa/402769.html

回到顶部