zoukankan      html  css  js  c++  java
  • 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的形式,以&进行拼接。

  • 相关阅读:
    我的学习思维:有关时间的管理
    Eureka的故事,专注能让你看到别人看不到的事情
    善用思维导图来整理发散的思维
    二八原理:人才招聘中的二八原理
    二八原理:员工激励中的二八原理
    二八原理:员工的三种类型
    二八原理:你必须知悉的二八原理
    Java程序员笔试、面试题目
    String StringBuffer StringBuilder
    log4j的使用详细解析
  • 原文地址:https://www.cnblogs.com/youcong/p/11070346.html
Copyright © 2011-2022 走看看