gpt4 book ai didi

javascript - Node.js 中的 HTTP POST 不起作用

转载 作者:行者123 更新时间:2023-11-30 17:59:28 25 4
gpt4 key购买 nike

我试图从 nodejs 将数据发布到另一个 URL 127.0.0.1:3002(在文件 poster.js 中),但是当我尝试在 127.0.0.1:3002 的服务器上访问它时,发布的数据没有到来:

我的 poster.js 看起来像这样:

var http = require('http');

function post() {

var options = {
host : '127.0.0.1',
port : 3002,
path : '/note/',
method : 'POST'
};

var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function(chunk) {
console.log('BODY: ' + chunk);
});
});

req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});

req.write("<some>xml</some>");
req.end();
}

post();

我在 app.js 中的服务器代码是:

var express=require('express');
app=express();

app.post('/note',function(req,res){
console.log(req.params);
})

app.listen(3002);
console.log('sweety dolly')

我的服务器控制台显示:

sweety dolly
[]

req.params 正在显示 [] 这意味着它在发送我正在发送 xml 时没有收到任何东西

在两个不同的命令行我正在触发两个不同的进程,比如

 node app

然后在下一个命令行

 node poster

我做错了什么????

最佳答案

您的客户端可以正常工作,但是当您POST 时,数据默认不会显示在服务器上的params 中(实际上,params 用于路由信息)

由于您发布的是原始数据,因此您需要自己收集数据才能使用它,例如通过使用您自己的简单正文解析器;

var express=require('express');

app=express();

app.use(function(req, res, next) {
var data = '';
req.setEncoding('utf8');
req.on('data', function(part) { // while there is incoming data,
data += part; // collect parts in `data` variable
});

req.on('end', function() { // when request is done,
req.raw_body = data; // save collected data in req.body
next();
});
});

app.post('/note',function(req,res){
console.log(req.raw_body); // use req.body that we set above here
})

app.listen(3002);
console.log('sweety dolly')

编辑:如果您希望将数据作为参数,则需要更改客户端以将数据发布为带有数据名称的查询字符串;

var http = require('http');
var querystring = require('querystring');

function post() {

var post_data = querystring.stringify({ xmldata: '<some>xml</some>' })

var options = {
host : '127.0.0.1', port : 3002, path : '/note/', method : 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length
}
};

var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function(chunk) {
console.log('BODY: ' + chunk);
});
});

req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});


req.write(post_data);
req.end();
}

post();

然后您可以使用标准的bodyParserparam 函数中获取数据;

var express=require('express');

app=express();

app.use(express.bodyParser());

app.post('/note',function(req,res){
console.log(req.param('xmldata'));
})

app.listen(3002);
console.log('sweety dolly')

关于javascript - Node.js 中的 HTTP POST 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17389382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com