nodejs发起HTTPS请求并获取数据

var https = require(‘https‘);
var zlib = require(‘zlib‘);
var post_data="………………";//请求数据
var reqdata = JSON.stringify(post_data);
var options = {
    hostname: ‘10.225.***.***‘,
    port: ‘8443‘,
    path: ‘/data/table/list‘,
    method: ‘POST‘,
    rejectUnauthorized: false,
    requestCert: true,
    auth: ‘admin:7584FD2E************‘,
    headers: {
        ‘username‘: ‘admin‘,
        ‘password‘: ‘7584FD2E************‘,
        ‘Cookie‘: ‘locale=zh_CN‘,
        ‘X-BuildTime‘: ‘2015-01-01 20:04:11‘,
        ‘Autologin‘: ‘4‘,
        ‘Accept-Encoding‘: ‘gzip, deflate‘,
        ‘X-Timeout‘: ‘3600000‘,
        ‘Content-Type‘: ‘Application/json‘,
        "Content-Length":reqdata.length
    }
};
var req = https.request(options, function (res) {
});
req.write(reqdata);
req.on(‘response‘, function (response) {
   switch (response.headers[‘content-encoding‘]) {
        case ‘gzip‘:
            var body = ‘‘;
            var gunzip = zlib.createGunzip();
            response.pipe(gunzip);
            gunzip.on(‘data‘, function (data) {
                 body += data;
            });
            gunzip.on(‘end‘, function () {
                 var returndatatojson= JSON.parse(body);
                 req.end();
            });
            gunzip.on(‘error‘, function (e) {
                 console.log(‘error‘ + e.toString());
                 req.end();
            });
            break;
        case ‘deflate‘:
            var output = fs.createWriteStream("d:temp.txt");
            response.pipe(zlib.createInflate()).pipe(output);
            req.end();
            break;
        default:req.end();
            break;
   }
 });
req.on(‘error‘, function (e) {
    console.log(new Error(‘problem with request: ‘ + e.message));
    req.end();
    setTimeout(cb, 10);
});

//以上是nodejs中通过https请求获取数据的全过程。注意,options,需要有请求数据的长度,options需要加上‘Accept-Encoding‘: ‘gzip, deflate‘,返回的数据需要判断是哪种压缩方式,然后解压缩获取到数据。gunzip的end事件里的returndatatojson即是获取的数据.
时间: 2024-12-13 07:50:50

nodejs发起HTTPS请求并获取数据的相关文章

发起https请求并获取结果

/**     * 发起https请求并获取结果     *      * @param requestUrl     *            请求地址     * @param requestMethod     *            请求方式     * @param outputStr     *            请求数据     * @return     * @throws Exception     */    public static String MsgHttpsR

React 中的 AJAX 请求:获取数据的方法

React 中的 AJAX 请求:获取数据的方法 React 只是使用 props 和 state 两处的数据进行组件渲染. 因此,想要使用来自服务端的数据,必须将数据放入组件的 props 或 state 中. 首先引入 axios. 1.`import axios from 'axios';` constructor 方法非常标准,调用 super,然后初始化 state,设置一个空的 posts 数 传入新的 posts 数组,使用 this.setState 方法更新组件状态.这会导致重

用curl发起https请求

使用curl发起https请求 使用curl如果想发起的https请求正常的话有2种做法: 方法一.设定为不验证证书和host. 在执行curl_exec()之前.设置option $ch = curl_init(); ...... curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 方法二.设定一个正确的证书. 本地ssl判别证书太旧,导致链接报错ssl

java如何发起https请求

1.写一个SSLClient类,继承至HttpClient import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http

用Java发起HTTP请求与获取状态码(含状态码列表)

转自:https://blog.csdn.net/xyw591238/article/details/51072697 在使用Java请求Web程序比如访问WebService接口时,通常需要先判断访问URL的有效性,这里就Java发送HTTP请求的方式做简单记录,按照前辈们的说法,Java发HTTP请求,最常见的无非是两种,一种是用java.net.URLConnection,另一种则是大名鼎鼎的HttpClient.使用java.net.URLConnection比较麻烦,而HttpClie

Python 学习之urllib模块---用于发送网络请求,获取数据(3)

上节内容,是得到了省/直辖市编码,如web='http://m.weather.com.cn/data5/city01',我们需要继续获取此接口的数据,于是进行下面的操作 for  i  in   b:                #i=b[0],b[1],b[2]...... code=i.split('|')[0] web='http://m.weather.com.cn/data5/city%s' web1=web %code content2=urllib.request.urlope

Python 学习之urllib模块---用于发送网络请求,获取数据(2)

接着上一次的内容. 先说明一下关于split()方法:它通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串(把一个字符串分割成很多字符串组成的list列表) 语法:str.split(str="", num=string.count(str)). 参数:str 分隔符,默认为空格.num 分割次数 返回值:返回分割后的字符串列表 例如:你需要将一个英语句子中的每一个单词拿出来单独处理,就可以将其进行分割. 如:a=' I am a new stude

ajax https请求返回json数据

怎么获取通过ajax请求的html代码:http://zhidao.baidu.com/link?url=Vk7mfepx1tNOp6DAy7KYY_wcUlKQxwwGpmCmct3akDwyXt5P8IIbzY_bLqABCUDFHFtbZs90jmYG11iN5APMKR-T7Acvix9A_DDcOpJA9lu http://www.iteye.com/problems/84999

Python 学习之urllib模块---用于发送网络请求,获取数据

1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1)urllib.request用法 1)urlopen函数:用于打开一个URL(urlopen返回一个类文件对象,可以像文件一样操作) 例如: import urllib.request web=urllib.request.urlopen('http://www.baidu.com') conten