从入门到放弃
导语
Nodejs是使用javascript编写,运行在服务器上的,实际上就是用的浏览器的V8引擎。
一.基本内容
我也不知道该写什么QAQ,反正很多都是和javascript一样的,不同的是在node环境下才能运行。有很多个模块,第一次使用还要安装,各个模块之间通过require
来关联。
二.一个发微博的小demo
- 用到http,querystring两个模块,先关联先
var http=require('http');
var querystring=require('querystring');
- 将要发送的内容转码
使用querystring.stringify
方法将内容转义,具体的格式需要去你的目标网站的ajax请求里看,以微博为例
//weibo.com里的
var postData=querystring.stringify({
'location':'v6_content_home',
'style_type':1,
'text':'此条信息由代码发送',
'module':'stissue',
'pub_source':'main_',
'pub_type':'dialog',
'_t':0
});
- 写数据头
var options={
hostname:'weibo.com',
part:80,
path:'/aj/mblog/add?ajwvr=6&__rnd=1473507636522',
method:'POST',
headers:{
'Accept':'*/*',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6',
'Connection':'keep-alive',
'Content-Length':postData.length,
'Content-Type':'application/x-www-form-urlencoded',
'Cookie':'SINAGLOBAL=4985208110960.924.1470552230960; wvr=6; un=wozhishigekanke@sina.com; YF-V5-G0=55fccf7be1706b6814a78384fa94e30c; SCF=AsV_DxZ8YydDJVCeTBVIDfNvxpRFRBswSB_o_hv11cKZsl4keccX7lzPaDqiR2v7S89y8QhoMeUu9nguMgdTgD8.; SUB=_2A25614FUDeTxGeRM6lUT8CfMyziIHXVZpPWcrDV8PUNbmtBeLU2tkW8m9eMNf_wMo7nalyuVEev2sdALqg..; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5WdJVuCl-za7_NhdBXHHNZ5JpX5KMhUgL.FozEeKMEeh.7ehB2dJLoI0qLxKBLBonL12BLxK-L12qLB-2LxKqL1KnLB-qLxKBLBonLB-2LxKML1-eL12zLxK-LB--LBKzt; SUHB=0FQ660L0xrePgJ; ALF=1505043588; SSOLoginState=1473507589; _s_tentry=login.sina.com.cn; UOR=,,login.sina.com.cn; Apache=8404689097517.37.1473507589378; ULV=1473507590825:68:20:13:8404689097517.37.1473507589378:1473474011382; YF-Page-G0=074bd03ae4e08433ef66c71c2777fd84',
'Host':'weibo.com',
'Origin':'http://weibo.com',
'Referer':'http://weibo.com/u/2217209004/home?wvr=5',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'
}
}
- 发送http请求
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();
然后就大功告成啦!!!