Sending data through POST request from a node.js server to a node.js server
我正在尝试通过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 '); req.write('data '); req.end(); |
这个块或多或少来自node.js网站,所以它应该是正确的。 我唯一没看到的是如何在
1 2 3 4 5 6 | app.post('/login', function(req, res){ var user = {}; user.username = req.body.username; user.password = req.body.password; ... }); |
如何将
谢谢
发布数据是一个发送查询字符串的问题(就像在
这需要
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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标头,即
以完全相同的方式发送JSON(
URL编码数据支持一级结构(即键和值)。在交换具有嵌套结构的数据时,JSON非常有用。
底线是:服务器必须能够解释有问题的内容类型。它可能是
如果您的数据是一个不寻常的字符集,即不是UTF-8,请添加一个charset参数(例如
您还可以使用Requestify,这是我为nodeJS +编写的非常酷且非常简单的HTTP客户端,它支持缓存。
只需执行以下操作即可执行POST请求:
1 2 3 4 5 6 7 8 9 | 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(); }); |