nodejs封装的webget webpost方法
在我之前的项目中,经常用到Nodejs通过post\get方法访问其它网站、webapi。下面是我封装的
Get、Post方法,很适合在一些web字符串收发场景使用(暂不支持文件、二进制流等传输)。
****************************************************************************************************
var util = require('util');
var http = require("http");
var querystring = require('querystring');
var iconv = require('iconv-lite');
//web get
exports.WebGet = function (url, callback,encode) {
try {
http.get(url, function (req, res) {
var chunks = [];
var len = 0;
req.on('data', function (chunk) {
chunks.push(chunk);
len += chunk.length;
});
req.on('end', function () {
var data = Buffer.concat(chunks, len);
var html;
if (encode != null) {
html = iconv.decode(data, encode);
} else {
html = data.toString();
}
callback != null ? callback(html) : null;
});
});
}
catch (e) {
callback != null ? callback(e.message) : null;
}
}
//web post
exports.WebPost = function (_hostname, _port, _path,_data,callback) {
try {
var post_data = querystring.stringify(_data);
var option = {
hostname: _hostname,
port: _port,
path: _path,
method: 'POST',
headers: {
"Content-Type": 'application/x-www-form-urlencoded',
"Content-Length": post_data.length
}
};
var req = http.request(option, function (res) {
var html = "";
res.setEncoding('utf8');
res.on("data", function (chunk) {
html += chunk;
});
res.on('end', function () {
callback != null ? callback(html) : null;
});
}).on("error", function (e) {
callback != null ? callback(e.message) : null;
});
req.write(post_data + "\n");
req.end();
}
catch (e) {
callback != null ? callback(e.message) : null;
}
};
****************************************************************************************************
//WebGet使用实例:
_web.WebGet("http://www.xxx.com/a/b.htm", callBackFun, 'gb2312');
//WebPost使用实例:
var data = {
id: 1,
msg: 'abc'
};
_web.WebPost("www.xxx.com", 80, "/a/SendMsg", data, callBackFun);
****************************************************************************************************
//注1:nodejs默认支持utf-8编码,需要进行编码转换的请安装"iconv-lite"模块:npm install iconv-lite;
//注2:WebGet没有使用http.request中的method: 'GET', 而是使用 http.get。这是为了多展示一个方法,其效果是一样的;
//注3:WebPost网址参数不用加"http://",内部也没有像WebGet里一样在res.on("data")、res.on('end')里做chuank的buffer、string处理,有需要的请自行复制处理。
最新文章
- [Bind(Exclude = ";OrderId";)][ScaffoldColumn(false)]
- 【菜鸟玩Linux开发】Redis安装和自启动配置
- UnitTest
- IntelliJ IDEA 调试小记
- java集合简介
- 1.对于.NET的初步理解和介绍
- java动态加载配置文件
- mybatis中updateByPrimaryKeySelective
- Spring高级装配
- 实现基于Haproxy+Keepalived负载均衡高可用架构
- [BZOJ]2017省队十连测推广赛1
- git 常用操作,下拉,提交,更新,还原
- Jboss解决只能通过localhost访问而不能使用IP访问项目的问题
- [UE4]小地图接口设计
- activemq在一台服务器上启动多个Broker
- 单用户模式&;救援模式&;克隆虚拟机&;Linux机器相互登录
- Linux 系统的主机别名文件
- 区块链的java实现
- 【Twitter接口】网站嵌入推特信息
- Sublime Text 2/3 安装Emmet(Zencoding)以及常见使用,一种快速编写HTML/CSS代码的方法