在我之前的项目中,经常用到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处理,有需要的请自行复制处理。

nodejs封装的webget webpost方法的更多相关文章

  1. 使用nodejs防止csurf攻击的方法

    一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSR ...

  2. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  3. Unity属性的封装、继承、方法隐藏

    (一)Unity属性封装.继承.方法隐藏的学习和总结 一.属性的封装 1.属性封装的定义:通过对属性的读和写来保护类中的域. 2.格式例子: private string departname; // ...

  4. 自己封装的一个js方法用于获取显示的星期和日期时间

    自己封装的一个js方法用于获取显示的星期和日期时间 /** * 获取用于显示的星期和日期时间 * @param date * @returns {string} */ function getWeek ...

  5. 原生ajax与封装的ajax使用方法

    当我们不会写后端接口来测试ajax时,我们可以使用node环境创建一个本地服务器. 1.创建一个本地服务器可参考http://www.cnblogs.com/heyujun-/p/6793900.ht ...

  6. 封装常用的selenium方法

    package com.yk.userlive.base; import java.net.MalformedURLException;import java.net.URL;import java. ...

  7. nodejs取参四种方法req.body,req.params,req.param,req.body

    摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现. 获取 ...

  8. javascript的函数、创建对象、封装、属性和方法、继承

    转自原文javascript的函数.创建对象.封装.属性和方法.继承 一,function 从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法 如:functi ...

  9. 67.nodejs取参四种方法req.body,req.params,req.param,req.body

    转自:http://www.cnblogs.com/jkingdom/p/8065202.html 摘要: nodejs取参四种方法req.body,req.params,req.param,req. ...

随机推荐

  1. http转https的各种应用

    http://www.lccee.com/content-57.html https://www.gworg.com/ssl/127.html apach: LoadModule socache_sh ...

  2. IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建

    导引 iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 ...

  3. 技巧:开启ubuntu系统桌面上的右键进入terminal命令行控制台功能

    $ sudo apt-get install nautilus-open-terminal 执行上述命令,重启. 重启命令: $ sudo reboot 注意:需要联网

  4. 研磨设计模式学习笔记4--单例模式Signleton

    需求:加载配置文件,由于配置文件全局唯一,所以不用过多对象,建一个就可以了. 优点:单例模式本质就是为了控制实例数目. 一.饿汉式 public class Singleton { private S ...

  5. 前后端分离之JWT用户认证

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了.于是我 ...

  6. How to Fold a Julia Fractal

    How to Fold a Julia FractalA tale of numbers that like to turn http://acko.net/blog/how-to-fold-a-ju ...

  7. 30段有用的javascript代码

    1. 如何区分IE及非IE浏览器 if(!+[1,]){ console.log("这是IE浏览器"): } else{ console.log("这不是IE浏览器&qu ...

  8. JavaScript DOM基础总结

    上个月在进行百度三面时候,面试官提问JavaScript DOM方法,我回答的有点少,前面太关注JavaScript 兼容性,框架方面,JavaScript 原生DOM基础没有记牢,心中有点遗憾.下来 ...

  9. 接口调试,HttpWebRequest和HttpWebResponse使用,接口回调处理

    public void queryIdCardSelects { string url=“jiekoudizhi.html”; string param="jiekoucanshu" ...

  10. mysql数据库免安装版的配置过程

    1,从mysql官方网站下载免安装版本与自己电脑位数相同的mysql版本. 链接:https://www.mysql.com/ 2,将包解压到自定义的目录下 (例:D:\mysql-5.7.23-wi ...