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

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

代码示例如下:

  1. var http = require('http');
  2.  
  3. var qs = require('querystring');
  4.  
  5. var userCode = "";
  6.  
  7. var post_data = {
  8. userCode: userCode};//这是需要提交的数据
  9.  
  10. var content = qs.stringify(post_data);
  11.  
  12. var options = {
  13. hostname: 'www.test.com',
  14. port: ,
  15. path: '/test-web/api/sysUser/getUserCodeByInfo',
  16. method: 'POST',
  17. headers: {
  18. 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
  19. }
  20. };
  21.  
  22. var req = http.request(options, function (res) {
  23. console.log('STATUS: ' + res.statusCode);
  24. console.log('HEADERS: ' + JSON.stringify(res.headers));
  25. res.setEncoding('utf8');
  26. res.on('data', function (chunk) {
  27. console.log('BODY: ' + chunk);
  28.  
  29. var data = JSON.parse(chunk);
  30. console.log(data.returnCode);
  31. });
  32. });
  33.  
  34. req.on('error', function (e) {
  35. console.log('problem with request: ' + e.message);
  36. });
  37.  
  38. // 将数据写入请求体
  39. req.write(content);//注意这个地方
  40.  
  41. req.end();

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

代码示例如下:

  1. var querystring = require('querystring');
  2.  
  3. const https = require("https");
  4. var userCode = "";
  5. var post_data = { userCode: userCode }
  6. var contents = querystring.stringify(post_data);
  7.  
  8. var options = {
  9. hostname: "www.test.com",
  10. port: , //
  11. path: "/test-web/api/sysUser/getUserCodeByInfo?"+contents ,
  12. method: "POST",
  13. rejectUnauthorized: false,
  14. headers: {
  15. Accept: "*/*",
  16. "Accept-Encoding": "utf-8",
  17. "Accept-Language": "zh-CN,zh;q=0.8",
  18. Connection: "keep-alive",
  19. Host: "www.test.com"
  20. },
  21.  
  22. };
  23. var mData = '';
  24. var req = https.request(options, function (res) {
  25. res.setEncoding('utf-8');
  26.  
  27. res.on('data', function (chunk) {
  28. var data = JSON.parse(chunk);
  29. console.log('BODY: ' + data);
  30. });
  31. });
  32. // req.write(contents);
  33. req.on("error", function (e) {
  34. console.error("====================================================" + e);
  35. });
  36. req.end();

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

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

  1. 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. Java跳出多重循环的方法

    我们一般用break和cuntinue来控制单个循环,但是如果遇到有多个循环的情况呢,比如下面这个: for (int i=0; i<10; i++) { for (int j=0; j< ...

  2. 【开发工具】- myeclipse安装主题

    你想用IDEA那样炫酷的符合90后气质的主题吗?废话不多说,按照下边步骤就可以安装像IDEA一样超级炫酷的主题. 下载主题 1.进入插件官网(http://eclipsecolorthemes.org ...

  3. 深入理解es6(上)

    一.let和const 1.let与var的区别 不存在变量提升 块级作用域 不允许重复声明 2.const常量 const与let一样,唯一区别在于声明的常量不能被修改 二.解构赋值 es6按照一定 ...

  4. 遍历js对象中的属性

    可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...

  5. Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别

    存储介绍 Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足.一般我们存储内容都会 ...

  6. 阿里播放器踩坑记录 进度条重构 video loadByUrl失效解决方案

    如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 文档地址:https://player.alicdn.com/aliplayer/index. ...

  7. 程序员的选房神技,GitHub上的房源爬虫

    买房,在中国是任何一个年轻人都绕不开都话题.特别是在当下限购摇号等多重政策打压的情况,要选到一个自己心仪的房子可谓难度不小. 而且,伴随着房价上涨的还有房租.买不起房的,想要租个合适的小窝也不容易啊! ...

  8. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

  9. ViCANdo新版本发布(PART1) | 点云库(PCL)集成

    激光雷达         随着智能驾驶技术的发展,激光雷达迅速的进入工程师的视野,不管是机械式.MEMS还是纯固态激光雷达,本质上都是以一定的速度扫描照射区域,在此过程中激光雷达不断的发出激光并接收反 ...

  10. 万众期待的kintone开发账号免费开放申请啦!

    亲爱的小伙伴们,等了很久很久的kintone开发账号终于可以免费申请使用了! 有人想问了,什么是kintone? kintone是指无需开发知识,即可根据公司业务轻松创建系统的Cybozu的云服务. ...