應用場景:
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的形式,以&進行拼接。