通过http
模块获取一个数据值,如下:
http.request(options,function(res){
console.log('Status:'+res.statusCode)
//console.log('Headers:'+JSON.stringify(res.headers))
console.log(res.body)
res.on('data',function(chunk){
...
})
res.on('end',function(){
console.log('发送完毕')
})
})
options配置:
var options = {
host:'www.123.com',
port:80,
path:'/course/AjaxCourseMembers?ids='+ids,
method:'GET',
headers:{
'Accept':'*/*',
'Accept-Encoding':'gzip, deflate, sdch',
.....
}
}
输出的res.statusCode
为200但是在res
却得不到json数据,而通过jQuery是可以获取到正确数据的,请问是哪里的问题?
1.res.body里面不是用来获取返回数据的
2.在res.on('data')里面获取的chunk(Buffer类型)是返回的数据
3.你别自己把错误吞掉, 这样看不到错误了
var req = http.request(options,function(res){
console.log('Status:'+res.statusCode)
//console.log('Headers:'+JSON.stringify(res.headers))
console.log(res.body)
res.on('data',function(chunk){
...
})
res.on('end',function(){
console.log('发送完毕')
})
})
req.on('error', (e) => {
console.log(`problem with request: ${e}`);
});
req.on('close', function() {
console.log('connection closed!');
});
req.on('socket', function(socket) {
console.log('socket size:'+socket.bufferSize);
socket.on('data', function(data) {
console.log('socket data:'+data);
});
});
req.end();
4.报错read ECONNRESET
如果这个域名不是你的www.123.com
, 服务端主动把你的请求连接关掉了, 我随便试了一个ids,你试试你自己有效的。希望能帮到你
怎么不用 request
模块
request(__URL__, function (error, response, body) {
if (!error && response.statusCode === 200) {
const data = JSON.parse(body);
...
} else {
...
}
});