2069970
本人 node版本为 v7.8 在使用 http.request方法时,无法发送post请求,当注释Content-Length时可发送请求
但是我使用 Content-Length长度为 序列化后的长度,所以我想请教下,为什么无法发送次请求。
此时长度都为71,为何无法发送post请求,当注释掉后可发送请求
再次谢谢各位大佬
本人 node版本为 v7.8 在使用 http.request方法时,无法发送post请求,当注释Content-Length时可发送请求
但是我使用 Content-Length长度为 序列化后的长度,所以我想请教下,为什么无法发送次请求。
此时长度都为71,为何无法发送post请求,当注释掉后可发送请求
再次谢谢各位大佬
@zhang962976642 建议好好看看 http 协议 。。。不然,以后出问题了靠猜是没用的
@imhered @vincentLiuxiang 谢谢二位, 完美解决 确实是没有发送 req.write()导致没有请求题的问题 ;
@vincentLiuxiang 您好我现在改成这样了
可是这样为何还是没有数据
@zhang962976642
实在不行就用 request模块吧,我以前也是用http 后来用了request模块发现不要太爽
@zhang962976642 post 请求,你的方法里没有把 body 发出去啊, 在 _req.end() 之前 先 _req.write(body)
_req.write(data)
_req.end()
你这 length 不对吧?有中文。
@imhered 我想转发post请求,怎么携带这两个参数
@zhang962976642 你这个截图实在不好调啊,我给你上个正确代码吧,我之前写的
var iapdata = JSON.stringify(iapdata);
var url = 'buy.itunes.apple.com'
opt = {
method: 'POST',
host: url,
port: 443,
path: '/verifyReceipt',
headers: {
'Content-Type': 'application/json',
'Content-Length': iapdata.length
}
},
request = require('https').request(opt, function (res) {
if (res.statusCode === 200) {
var body = "";
res.on('data', function (data) {
body += data;
}).on('end', function () {
// do something
});
} else {
// do something
}
}).on('error', function (e) {
// error logic
});
request.write(iapdata + "\n");
request.end();
我这里是https请求所以端口是443,你的是http端口80没错
@zhang962976642 res.on('data',cb) 这个是正确的情况下才会监听到该事件? error你监听了么?
上你完整的代码
@vincentLiuxiang
第一张图为 http的响应头信息,确实发送了post,但是data事件没触发,这是我 注释掉Content-length之后发送的请求,如果不注释,他不走这个 request方法
@imhered 我去掉conteng-length 确实可以发 post请求,我打印状态码是 200 ,但是 res.on('data',fn);这个事件没有触发
我猜不加Content-Length的时候它也是走了http.request这个方法,只不过报错了,你没捕捉error吧?
后面的代码被你的图片挡住了,也没看清。。。
http 内容实体 res.write(body) 发了吗?
@i5ting 请教下 狼叔