国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

nodejs實現百度輿情接口應用示例

2024-05-06 15:44:14
字體:
來源:轉載
供稿:網友

本文實例講述了nodejs實現百度輿情接口。分享給大家供大家參考,具體如下:

const URL = require('url');const http = require('http');const https = require('https');const qs = require('querystring');let trends = exports;trends.getInstance = function () {  return new Trends;}function Trends() {  this.expireTime = 1800;  this.accessKey = 'xxxxxxxx';  this.secretKey = 'xxxxxxxx';  this.userKey = 'xxxxxxxx';  this.userSecret = 'xxxxxxxx';  this.host = 'trends.baidubce.com';  this.timestamp = _.time();  this.utcTimestamp = _.utcTime();}Trends.prototype.request = async function (method, uri, params) {  method = method.toUpperCase();  let token = this.getToken();  let headers = this.getHeaders(method, uri);  params = Object.assign({}, params || {}, {    'user_key': this.userKey,    'token': token,    'timestamp': this.timestamp  });  let url = `http://${this.host}${uri}`;  return await this.httpRequest(method, url, params, headers);}Trends.prototype.getHeaders = function (method, uri) {  let authorization = this.getAuthorization(method, uri);  return {    'Content-Type': 'application/x-www-form-urlencoded',    'Host': this.host,    'x-bce-date': this.utcTimestamp,    'Authorization': authorization,  };}Trends.prototype.getAuthorization = function (method, uri) {  let authString = `bce-auth-v1/${this.accessKey}/${this.utcTimestamp}/${this.expireTime}`;  let signinKey = _.hmac(authString, this.secretKey, 'sha256');  let header = {    'host': this.host,    'x-bce-date': _.urlencode(this.utcTimestamp)  };  let headerArr = [];  for (let name in header) {    let val = header[name];    headerArr.push(`${name}:${val}`);  }  let headerKeyStr = Object.keys(header).sort().join(';');  let requestStr = `${method}/n${uri}/n/n${headerArr.join('/n')}`;  let signautre = _.hmac(requestStr, signinKey, 'sha256');  return `${authString}/${headerKeyStr}/${signautre}`;}Trends.prototype.getToken = function () {  return _.hmac(this.userKey + this.timestamp, this.userSecret);}Trends.prototype.httpRequest = async function (method, url, params, headers) {  let urlObj = URL.parse(url);  let protocol = urlObj.protocol;  let options = {    hostname: urlObj.hostname,    port: urlObj.port,    path: urlObj.path,    method: method,    headers: headers,    timeout: 10000,  };  let postData = qs.stringify(params || {});  return new Promise((resolve, reject) => {    let req = (protocol == 'http:' ? http : https).request(options, (res) => {      let chunks = [];      res.on('data', (data) => {        chunks.push(data);      });      res.on('end', () => {        let buffer = Buffer.concat(chunks);        let encoding = res.headers['content-encoding'];        if (encoding == 'gzip') {          zlib.unzip(buffer, function (err, decoded) {            resolve(decoded.toString());          });        } else if (encoding == 'deflate') {          zlib.inflate(buffer, function (err, decoded) {            resolve(decoded.toString());          });        } else {          resolve(buffer.toString());        }      });    });    req.on('error', (e) => {      _.error('request error', method, url, params, e);      resolve('');    });    req.on("timeout", (e) => {      _.error('request timeout', method, url, params, e);      resolve('');    })    if (method.toUpperCase() == 'POST') {      req.write(postData);    }    req.end();  });}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 祁东县| 虹口区| 双江| 麻城市| 天全县| 南和县| 大城县| 襄汾县| 三亚市| 浪卡子县| 巴林右旗| 高州市| 志丹县| 苏尼特左旗| 平谷区| 互助| 潮州市| 常德市| 浦城县| 集安市| 南和县| 商城县| 通河县| 永年县| 柘城县| 筠连县| 台州市| 壤塘县| 邯郸县| 吉木乃县| 盱眙县| 南阳市| 获嘉县| 革吉县| 喀喇沁旗| 雷山县| 曲周县| 溧阳市| 盐津县| 杭州市| 团风县|