NodeJS如何发送HTTPS请求

http://blog.youkuaiyun.com/baby97/article/details/49702379

微信的接口都使用HTTPS协议,使用NodeJS需创建HTTPS对象.

详细使用参考官网文档https://nodejs.org/api/https.html

代码如下:

[javascript] view plain copy
  1. var https = require("https");  
  2. var iconv = require("iconv-lite");  
  3.     var url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";  
  4.     https.get(url, function (res) {  
  5.         var datas = [];  
  6.         var size = 0;  
  7.         res.on('data'function (data) {  
  8.             datas.push(data);  
  9.             size += data.length;  
  10.         //process.stdout.write(data);  
  11.         });  
  12.         res.on("end"function () {  
  13.             var buff = Buffer.concat(datas, size);  
  14.             var result = iconv.decode(buff, "utf8");//转码//var result = buff.toString();//不需要转编码,直接tostring  
  15.             console.log(result);  
  16.         });  
  17.     }).on("error"function (err) {  
  18.         Logger.error(err.stack)  
  19.         callback.apply(null);  
  20.     }); 
### 使用 Node.js 发送 HTTP 请求 在 Node.js 中发送 HTTP 请求可以通过多种方式完成,包括使用标准库 `http` 和 `https` 模块以及第三方库如 Axios 或 Request。 #### 1. 使用原生 `http` 模块发送 GET 请求 以下是一个简单的例子,展示了如何通过 `http` 模块向服务器发起 GET 请求: ```javascript const http = require('http'); const options = { hostname: 'example.com', port: 80, path: '/', method: 'GET' }; const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log(data); }); }); req.on('error', (e) => { console.error(`问题: ${e.message}`); }); req.end(); ``` 此代码片段定义了一个到指定主机名和路径的 GET 请求,并监听响应数据事件以便收集返回的数据[^1]。 #### 2. 使用原生 `http` 模块发送 POST 请求 对于 POST 请求,可以设置请求头并附加要提交的数据体。这里提供一个基于原生 `http` 模块的例子: ```javascript const postData = JSON.stringify({ key: 'value' }); const options = { hostname: 'jsonplaceholder.typicode.com', port: 443, path: '/posts', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(postData) } }; const req = http.request(options, (res) => { let responseBody = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { responseBody += chunk; }); res.on('end', function() { console.log(responseBody); }); }); req.write(postData); req.end(); ``` 这段脚本演示了怎样构建带有 JSON 数据的有效载荷并通过 POST 方法将其传递给目标 URL[^2]。 #### 3. 利用 Axios 库简化操作 Axios 是一种流行的 JavaScript 库,用于执行网络请求。它支持 Promise 并能自动转换 JSON 响应。下面是如何利用 Axios 进行 GET 和 POST 请求的一个实例: ##### GET 请求示例: ```javascript const axios = require('axios'); axios.get('https://jsonplaceholder.typicode.com/todos/1') .then(function (response) { console.log(response.data.id); console.log(response.data.title); }) .catch(function (error) { console.error(error); }); ``` ##### POST 请求示例: ```javascript const axios = require('axios'); axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'foo', body: 'bar', userId: 1 }) .then((response) => { console.log(response.status); // 输出状态码 console.log(response.statusText); // 输出状态消息 }); ``` 上述代码分别显示了采用 Axios 执行基本 GET 及 POST 调用的方式[^2]。 #### 4. 使用已废弃的 Request 库 尽管官方已经停止维护 request 库,但在某些旧项目中仍可能遇到它的身影。下面是其典型应用案例之一: ```javascript const request = require('request'); request({ url: 'https://jsonplaceholder.typicode.com/todos/1', json: true }, (err, res, body) => { if (err) { return console.log(err); } console.log(body.id); console.log(body.title); }); ``` 该部分说明了借助 request 工具包获取远程资源的具体做法[^3]。 --- ### 总结 以上介绍了几种常见的在 Node.js 环境下实施 HTTP 请求的技术手段,涵盖了基础内置功能与外部依赖项的选择范围。开发者可以根据实际需求选取最适合自己的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值