node.js之客户端发起https和http请求

应用场景:
1.VsCode插件开发(主要针对以javascript为主的vscode插件);
2.使用Node.js开发的客户端程序

Node.js之http请求(客户端)

代码示例如下:

复制代码
var http = require('http');  
  
var qs = require('querystring');  

var userCode = "1";

var post_data = {  
    userCode: userCode};//这是需要提交的数据  
  
  
var content = qs.stringify(post_data);  
  
var options = {  
    hostname: 'www.test.com',  
    port: 80,  
    path: '/test-web/api/sysUser/getUserCodeByInfo',  
    method: 'POST',  
    headers: {  
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'  
    }  
};  
  
var req = http.request(options, function (res) {  
    console.log('STATUS: ' + res.statusCode);  
    console.log('HEADERS: ' + JSON.stringify(res.headers));  
    res.setEncoding('utf8');  
    res.on('data', function (chunk) {  
        console.log('BODY: ' + chunk);  
        
        var data = JSON.parse(chunk);
        console.log(data.returnCode);
    });  
});  
  
req.on('error', function (e) {  
    console.log('problem with request: ' + e.message);  
});  
  
// 将数据写入请求体
req.write(content);//注意这个地方  
  
req.end();
复制代码

Node.js之https请求(客户端)

代码示例如下:

复制代码
var querystring = require('querystring');

const https = require("https");
    var userCode = "1";
    var post_data = { userCode: userCode }
    var contents = querystring.stringify(post_data);

    var options = {
        hostname: "www.test.com",
        port: 443, //443
        path: "/test-web/api/sysUser/getUserCodeByInfo?"+contents ,
        method: "POST",
        rejectUnauthorized: false,
        headers: {
            Accept: "*/*",
            "Accept-Encoding": "utf-8",
            "Accept-Language": "zh-CN,zh;q=0.8",
            Connection: "keep-alive",
            Host: "www.test.com"
        },

    };
    var mData = '';
    var req = https.request(options, function (res) {
        res.setEncoding('utf-8');
        
         res.on('data', function (chunk) {  
         var data = JSON.parse(chunk);
         console.log('BODY: ' + data);  
    }); 
    });
    // req.write(contents);
    req.on("error", function (e) {
        console.error("====================================================" + e);
    });
    req.end();
复制代码

 上面的hostname,如果不是域名修改为ip地址,请修改成这样,将www.test.com改为192.168.126.130,切不可指定为http://192.168.126.130,
否则会出现请求失败,主要体现为如下错误:

还有一点需要强调,如果参数不用querystring.stringify()包裹的话,会出现如下错误:

Request path contains unescaped characters

那么为什么需要querystring呢?
因为querystring.stringify()能将对象序列化成URL的形式,以&进行拼接。

posted @   挑战者V  阅读(7718)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2018-06-22 MP实战系列(八)之SpringBoot+Swagger2
点击右上角即可分享
微信分享提示