通过POST请求将数据从node.js服务器发送到node.js服务器
我试图通过从一个node.js服务器到另一个node.js服务器的POST
请求发送数据。 我在“客户端”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('datan');
req.write('datan');
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;
...
});
如何将这些username
和password
字段添加到options
变量中以使其登录?
谢谢
发布的数据是发送一个查询字符串的问题(就像你的方式将与后一个URL发送?
)作为请求主体。
这需要Content-Type
和Content-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标题,即标准HTML表单将使用的传统格式的application/x-www-form-urlencoded
。
以完全相同的方式发送JSON( application/json
)很容易; 只是JSON.stringify()
数据。
URL编码的数据支持一级结构(即键和值)。 当涉及交换具有嵌套结构的数据时,JSON非常有用。
底线是:服务器必须能够解释有问题的内容类型。 它可以是text/plain
或其他任何内容; 如果接收服务器了解它,则不需要转换数据。
如果您的数据使用不常见的字符集,即不是UTF-8,请添加charset参数(例如application/json; charset=Windows-1252
)。 例如,如果您从文件中读取它,这可能是必需的。
你也可以使用Requestify,这是一个非常酷且非常简单的HTTP客户端,我为nodeJS +写的它支持缓存。
只需执行以下操作即可执行POST请求:
var requestify = require('requestify');
requestify.post('http://example.com', {
hello: 'world'
})
.then(function(response) {
// Get the response body (JSON parsed or jQuery object for XMLs)
response.getBody();
});
链接地址: http://www.djcxy.com/p/41087.html
上一篇: Sending data through POST request from a node.js server to a node.js server
下一篇: Steps to send a https request to a rest service in Node js