nodejs实现的http、https 请求封装操作示例
本文实例讲述了nodejs实现的http、https请求封装操作。分享给大家供大家参考,具体如下:
libs/request.js
constURL=require('url'); constzlib=require('zlib'); consthttp=require('http'); consthttps=require('https'); constqs=require('querystring'); functionRequest(cookie){ this.cookies=[]; if(cookie!==undefined){ this.setCookie(cookie); } } Request.prototype.getHeaders=function(host,postData){ letheaders={ 'Host':host, 'Pragma':'no-cache', 'Connection':'keep-alive', 'Cache-Control':'no-cache', 'Content-Type':'application/x-www-form-urlencoded', 'Accept-Language':'zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,es;q=0.2', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'User-Agent':'Mozilla/5.0(iPhone;CPUiPhoneOS9_1likeMacOSX)AppleWebKit/601.1.46(KHTML,likeGecko)Version/9.0Mobile/13B143Safari/601.1', }; if(this.cookies.length){ headers.Cookie=this.cookies.join(';'); } if(postData!=''){ headers['Content-Length']=Buffer.byteLength(postData); } returnheaders; } Request.prototype.setCookie=function(cookie){ letcookies=cookie.split(';'); for(letcofcookies){ c=c.replace(/^\s/,''); this.cookies.push(c); } returnthis; } Request.prototype.request=function(method,url,params){ letpostData=qs.stringify(params||{}); leturlObj=URL.parse(url); letprotocol=urlObj.protocol; letoptions={ hostname:urlObj.host, port:urlObj.port, path:urlObj.path, method:method, headers:this.getHeaders(urlObj.host,postData), }; returnnewPromise((resolve,reject)=>{ letreq=(protocol=='http:'?http:https).request(options,(res)=>{ letchunks=[]; res.on('data',(data)=>{ chunks.push(data); }); res.on('end',()=>{ letbuffer=Buffer.concat(chunks); letencoding=res.headers['content-encoding']; if(encoding=='gzip'){ zlib.gunzip(buffer,function(err,decoded){ resolve(decoded.toString()); }); }elseif(encoding=='deflate'){ zlib.inflate(buffer,function(err,decoded){ resolve(decoded.toString()); }); }else{ resolve(buffer.toString()); } }); }); req.on('error',(e)=>{ reject(e); }); if(postData!=''){ req.write(postData); } req.end(); }) } Request.prototype.get=function(url){ returnthis.request('GET',url,null); } Request.prototype.post=function(url,params){ returnthis.request('POST',url,params); } module.exports=function(cookie){ returnnewRequest(cookie); }
test.js
constrequest=require('./request')(); (asyncfunction(){ letres=awaitrequest.get('http://www.axita.com.cn/'); console.log(res); })();
执行命令
nodemontest.js
希望本文所述对大家node.js程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。