最近又拿起去年学了一段时间又放弃的NodeJS,由于本身是做java开发以及兼顾前端的程序猿,NodeJS用的还是比较少的,不用就容易忘记。在慕课网学习scott的NodeJS视频,展示了一个比较有意思的例子,用nodejs模拟慕课网评论.
话不说多,直接上代码:
var http = require('http')
var querystring = require('querystring')
var postData = querystring.stringify({
'content':'更新太慢勒',
'mid':8837
})
var options = {
hostname:'www.imooc.com',
port:'80',
path:'/course/docomment',
method:'POST',
headers:{
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Content-Length':postData.length,
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie':'imooc_uuid=fe4eb00a-b08b-4442-a87d-c077f0fa94dc; imooc_isnew_ct=1482112514; loginstate=1; apsid=I3ODRkMzRiY2MzNjZkZDlkNzZkZDk3OGYwNGFkYTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAyNjA1OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMjE0NDgzNjM5QHFxLmNvbQAAAAAAAAAAAAAAAAAAADhjOTM3MTEyMTVkZDJkODBiZGQ5MGZhYjUxZDk2YTNkADZbWAA2W1g%3DYj; last_login_username=1214483639%40qq.com; PHPSESSID=dlq6ctudtje87erfq523b0dak7; jwplayer.volume=71; IMCDNS=0; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1482112514,1482372528,1482377953,1482457056; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1482460689; imooc_isnew=2; cvde=585c7fe052b01-26',
'Host':'www.imooc.com',
'Origin':'http://www.imooc.com',
'Referer':'http://www.imooc.com/video/8837',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'
}
}
var req = http.request(options,function(res){
console.log('Status:'+res.statusCode)
console.log('headers:'+JSON.stringify(res.headers))
res.on('data',function(chunk){
console.log(Buffer.isBuffer(chunk))
console.log(typeof chunk)
})
res.on('end',function(){
console.log('评论完毕')
})
})
req.on('error',function(e){
console.log('Error:'+e.message)
})
req.write(postData)
req.end()
下面我详细讲解下具体代码的含义:
var postData = querystring.stringify({
'content':'更新太慢勒',
'mid':8837
})
这块代码通过实现模拟在浏览器F12-》NETWORK工具中提交评论时捕获的request请求
其中有两个参数,一个content和mid,作为模拟参数。
变量option里面存放的是请求参数:
后面定义request请求然后直接写入请求参数,req.write(postData),传到服务器模拟请求。
NodeJS视频学习推荐:http://www.imooc.com/learn/348