模拟post请求,但是后台得不到参数,用空的帮我看一下
发布于 11 年前 作者 langzitxp 15050 次浏览 最后一次编辑是 8 年前

var options = { hostname: ‘localhost’, port: 8080, path: ‘/index/login’, method: ‘POST’ }; var qs=require(‘querystring’); var post_data={ userId:“langzi”, password:‘456465’ };//这是需要提交的数据 var content=qs.stringify(post_data); 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); });

// write data to request body req.write(content); req.end();

试了好几种语言,python ,php  在获取post的参数是都没有,得不到userId和password



搞不懂为啥nodejs的api没有设置header的选项呢,问题解决了,谢谢诸位帮忙,问题是这样解决滴:
供需要的人参考
var post_data={
    username:userName,
    password:userPassword,
    confirmpassword:userPassword
};
json这么写是木有问题滴,经过测试可以,
关键在于headers中设置:
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': content.length,
好像少哪一个也不可以,content对应的是 var content=qs.stringify(post_data);
开始的时候搞错了,一直在用post_data.length纠结浪费了我好久,
再次谢谢诸位!!
4 回复

<code>var post_data={ userId:“langzi”, password:‘456465’ };<code> 你这不是json数据 是一个对象了 修改成 <code>var post_data={ “userId”:“langzi”, ”password“:‘456465’ };<code>

在options中加上请求头:

options.headers = {
  'content-type': 'application/x-www-form-urlencoded'
}

谢谢你的建议,问题已解决

参考你的建议问题已解决,不过还要加一句’Content-Length’: content.length,谢谢

回到顶部