zoukankan      html  css  js  c++  java
  • nodejs使用request和bluebird编写的http请求模块

    var request = require("request");
    var promise = require("bluebird");
    //使用bluebird将request库的所有异步方法编译成promise形式,会自动加上Async后缀
    request = promise.promisifyAll(request);
    
    var curl = (function () { 
        function curl() { } 
    /** 
    * 输入一个url和需要post的数据(如果需要post),然后返回最终访问到的结果. * 
    * @author jie * @date 2015/2/5  
    * @param string url 需要访问的url. 
    * @param string postData 访问时,需要post过去的数据. 
    * @return promise 
    * */ 
    curl.visitAsync = function (url, postData) { 
        if (postData === void 0) { postData = ""; } 
        try { //request.debug = true;//详细打印请求报告 
            var res; 
            url = url.trim();
             //为没有http开头的url添加http头,必须添加 
            if (!url.match(/^http./)) {
                { url = "http://" + url; } 
            }
            //默认超时时间timeout为20秒,无须设置 
            var options = { url: url, form: "" }; 
            if (postData) { 
                //使用request库中的form来保存post数据,这样访问的content-type会变成application/x-www-form-urlencoded
                options.form = postData; //post数据 
                res = request.postAsync(options);
             //返回代执行的promise函数 
            } else{
                 res = request.getAsync(options);
            }
            //返回代执行的promise函数 
            return res.spread(function (res, body) { return body; }); 
        } catch (ex) {
         throw ex; 
        }
    }; //visitAsync return curl;})();module.exports = curl;
    
    
    使用:test.js
    
    
    import curl = require(".curl");
    var tsk = curl.visitAsync("http://www.baidu.com");
    tsk.then(body => { console.log(body);})
    
    看到bluebird库的api有catch()可以捕抓抛出的错误,不知道直接使用try-catch有没有作用呢~~~~~~~~
     https://www.npmjs.com/package/bluebird
  • 相关阅读:
    C++中char*,String,int,CString间转换
    获取本地MAC地址和多IP
    子窗口
    linux记录键盘
    curses和窗口
    使用curses函数写的hello world 程序
    Java 复习笔记
    Ubuntu apt install 下载软件很慢的解决办法
    Ubuntu python多个版本管理
    VMware下的Ubuntu16设置连接主机网络,设置主机下可以通过xshell访问 VMware下的Ubuntu
  • 原文地址:https://www.cnblogs.com/youlechang123/p/6795485.html
Copyright © 2011-2022 走看看