NodeJS模擬request請求
阿新 • • 發佈:2019-01-29
最近又拿起去年學了一段時間又放棄的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),傳到伺服器模擬請求。