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

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

代码示例如下:

var http = require('http');  

var qs = require('querystring');  

var userCode = "";

var post_data = {
userCode: userCode};//这是需要提交的数据 var content = qs.stringify(post_data); var options = {
hostname: 'www.test.com',
port: ,
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 = "";
var post_data = { userCode: userCode }
var contents = querystring.stringify(post_data); var options = {
hostname: "www.test.com",
port: , //
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的形式,以&进行拼接。

node.js之客户端发起https和http请求的更多相关文章

  1. Node.js 0.12: 正确发送HTTP POST请求

    Node.js 0.12: 正确发送HTTP POST请求 本文针对版本:Node.js 0.12.4 之前写过一篇Node.js发送和接收HTTP的GET请求的文章,今天再写一篇,讲发送POST的请 ...

  2. nginx反向代理node.js获取客户端IP

    使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy ...

  3. node.js 获取客户端信息

    结果:

  4. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求

    POST/GET请求--常见请求方式处理

  5. Node.js使用Express实现Get和Post请求

    var express = require('express'); var app = express(); // 主页输出 "Hello World" app.get('/', ...

  6. Node.js 部署免费/自动续订 HTTPS

    随着互联网快速发展,互联网信息安全越来越受到大家重视,HTTPS 应该是近两年各大厂商都在尽力普及的技术之一.国内大厂基本上已经全面普及了 HTTPS. 本文首发于我的个人网站:听说 - https: ...

  7. Node.js中的HTTPS示例

      需要openssl的支持, openssl本身不提供windows的安装程序,可以按照如下的步骤进行安装: (参考https://conetrix.com/Blog/how-to-install- ...

  8. Node.js实战(一)之概述

    , 一.Node.js介绍 Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进 ...

  9. Node.js Learning Notes

    简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...

随机推荐

  1. 不安全的验证码Insecure CAPTCHA

    没啥好讲的,当验证不合格时,通过burp抓包工具修改成符合要求的数据包.修改参数标志位.USER-AGENT之类的参数. 防御 加强验证,Anti-CSRF token机制防御CSRF攻击,利用PDO ...

  2. Pytorch 张量维度

    Tensor类的成员函数dim()可以返回张量的维度,shape属性与成员函数size()返回张量的具体维度分量,如下代码定义了一个两行三列的张量: f = torch.randn(2, 3) pri ...

  3. restfulframework引用多对多外键

    记录一下工作中遇到的问题 最近在写restfulframework,感觉还是很便利的 首先贴一下文档地址 https://www.django-rest-framework.org/api-guide ...

  4. Maven的SNAPSHOT版本找不到

    有时一个SNAPSHOT版本的包,明明打包部署到私服了,却还是报错找不到,比如: [WARNING] The POM for com.foo:bar:jar:0.4.0-20130404.093655 ...

  5. C#-使用GoogleAPI读写spreadsheets

    https://docs.google.com/spreadsheets/在线使用一些常用办公工具,比如excel. 如需要C#代码自动读写这些excel,则需要使用GoogleAPI. 封装的公用类 ...

  6. vue 父组件与子组件的三生三世

    父组件和子组件相互传值:https://www.cnblogs.com/cxscode/p/11187989.html vue父组件触发子组件方法:https://www.cnblogs.com/cx ...

  7. 查找正在运行的nginx目录

    linux系统因为备份.不同版本等问题,导致ECS Linux上存放有多个Nginx目录,可以通过如下方法定位当前正在运行的Nginx的配置文件: 1. 查看nginx的PID,以常用的80端口为例: ...

  8. tomcat下载地址

    https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.53/bin/ Index of /dist/tomcat/tomcat-6/v6.0.53 ...

  9. Hikari java数据库连接池实战

    环境InterlliJ2016.3  MySQL5.7.12 pom依赖: <dependency> <groupId>com.zaxxer</groupId> & ...

  10. Linux——CentOS7没有第二张网卡的配置信息

    前言 为了一个实验做测试,在VMware中配置了环境,但是配置了双网卡后发现第二张网卡没有配置文件. 都是些基本命令就不写了,图里也有. 系统 : CentOS7.6 步骤 查看网卡信息 使用ip a ...