1. 程式人生 > >NodeJS模擬request請求

NodeJS模擬request請求

最近又拿起去年學了一段時間又放棄的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),傳到伺服器模擬請求。