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的形式,以&進行拼接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM