一、http模块提供了两个函数http.request和http.get,功能是作为客户端向HTTP服务器发起请求。

Ext.Ajax.request({},function(response))

1.http.request(options,callback)发起HTTP请求,接受两个参数,option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数,option常用的参数如下

host:请求网站的域名或IP地址
port:请求网站的端口,默认是80,
method:请求方法,模式是GET/POST
path:请求的相对于根的路径,默认是"/"。QueryString应该包含在其中,例如/search?query=marico
headers:一个关联数组对象,为请求头的内容
callback传递一个参数,为http.ClientResponse的实例
http.request返回一个http.ClientRequest的实例
案例:clientRequest.js
var http=require('http');
var querystring=require('querystring');
//启动服务
http.createServer(function(req,res){console.log('请求到来,解析参数');//解析post请求var post='';req.on('data',function(chunk){post+=chunk;});req.on('end',function(){post=querystring.parse(post);//解析完成console.log('参数解析完成,返回name参数');res.end(post.name);});
}).listen(3000);//客户端请求
var contents=querystring.stringify({name:'marico',age:21,address:'beijing'
});
//Ext.encode();
//声明请求参数
var options={host:'localhost',path:'/',port:3000,method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded','Content-Length':contents.length}
};
//发送请求
var req=http.request(options,function(res){res.setEncoding('utf-8');res.on('data',function(data){console.log('后台返回数据');console.log(data);})
});
req.write(contents);
//必须调用end()
req.end();




2.http.get(options,callback) http模块还提供了一个更加简便的方法用于处理GET请求:http.get。它是http.request的简化版,唯一的区别在于http.get自动将请求方法设为GET请求,同时不需要手动调用req.end();

案例:clientGet.js
var http=require('http');
var url=require('url');
var util=require('util');
//启动服务
http.createServer(function(req,res){console.log('请求到来,解析参数');var params=url.parse(req.url,true);console.log('解析完成');console.log(util.inspect(params));console.log('向客户端返回');res.end(params.query.name);
}).listen(3000);//客户端请求
var request=http.get({host:'localhost',path:'/user?name=marico&age=21',port:3000},function(res){res.setEncoding('utf-8');res.on('data',function(data){console.log(' 服务端相应回来的数据为:'+data);})
});

二、http.ClientRequest

该对象是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行的HTTP请求,它提供了response事件,即http。request或http.get第二个参数制定的回调函数的绑定对象,请求必须调用end方法结束请求。
提供的函数:
request.abort() 终止正在发送的请求
request.setTimeout(timeout,[callback]) 设置请求超时时间,timeout为毫秒数,当请求超时后,callback将会被调用
其它:request.setNoDelay([noDelay])、request.setScoketKeepAlive([enable],[initialDelay])等函数。
API地址:http://nodejs.org/api/http.html

三、http.ClientResponse

http.ClientReponse是与http.ServerResponse相似,提供三个事件,data、end和close,分别在数据到达,传输结束和连接结束时触发,其中data事件传递一个参数chunk,表示接受到的数据
属性,表示请求的结果状态
statusCode   HTTP状态码,如200,404,500
httpVersion:HTTP协议版本
headers:HTTP请求头
trailers:HTTP请求尾
函数:
response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将以encoding编码。默认值为null,以buffer的形式存储。
response.pause():暂停接受数据和发送事件,方便实现下载功能。
response.resume():以暂停的状态中恢复

node.js http客户端相关推荐

  1. node.js api接口_如何在Node.js API客户端中正常处理故障

    node.js api接口 by Roger Jin 罗杰·金(Roger Jin) 如何在Node.js API客户端中正常处理故障 (How to gracefully handle failur ...

  2. Apache Ignite的Node.js客户端使用入门

    为什么80%的码农都做不了架构师?>>>    介绍 Ignite原生提供了若干种主要编程语言的支持,最近,还通过瘦客户端技术对其它的编程语言提供了支持,其中在2.7版本中新增加的瘦 ...

  3. 在既有系统中打通Apache Ignite、MySQL和Node.js

    为什么80%的码农都做不了架构师?>>>    介绍 在本系列的第一篇文章中,安装了Node.js.Ignite的Node.js瘦客户端包,并且测试了一个示例应用.在本文中,可以看一 ...

  4. 2021 年最值得使用的 Node.js 框架

    大家好,我是若川.今天推荐一篇译文:2021年最值得使用nodejs框架,值得收藏,很快能看完. 点击下方卡片关注我.加个星标. 学习源码整体架构系列.年度总结.JS基础系列 Node.js 是最敏捷 ...

  5. node.js 史上最详细 (博主持续更新)

    1. node.js介绍 诞生于2009年,它不是一门语言也不是一门框架,它是基于Google V8引擎的JavaScript运行时环境,同时结合Libuv拓展了JavaScript功能,使之支持IO ...

  6. Node.js基础笔记

    Node.js基础笔记 1. NodeJS入门基础 1.1 NodeJS 介绍 1.1.1 NodeJS 是什么 1.1.2 NodeJS 的优势 1.1.3 NodeJS 的技术特性 1.1.4 N ...

  7. Node.js的Web后端开发调研

    1. nodejs写后端优缺点(讲解nodejs与js区别) 1.1 Node.js是什么 Node.js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScr ...

  8. 常用Node.js 框架一览

    原文地址:Top Node.js Frameworks to use in 2021 原文作者:Ronak Patel 译文出自:掘金翻译计划 本文永久链接:https://github.com/xi ...

  9. js ftpclient linux server,Node.JS用Socket实现FTP Server服务器和Client客户端

    通信过程 FTP协议其实就是主机和服务通过Socket进行固定格式的通信过程,当某客户端连接到FTP 服务器后,客户端发送指令: [参数] 服务会按以下格式返回: [参数或说明] 例如以下是FileZ ...

最新文章

  1. 构造函数没有返回值是怎么赋值的?
  2. java ado连接mysql_【转】Java JDBC对应C# ADO连接数据库之区别
  3. mapreduce工作流程_详解MapReduce中的五大编程模型
  4. layui table 滚动 键盘
  5. 龙格库塔法解微分方程组的matlab程序,MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc...
  6. mysql 速度检索
  7. SpringBoot配置Druid
  8. mysql的告警日志_MySQL Aborted connection告警日志的分析
  9. app后端设计(php)
  10. xml.query() 实例演示
  11. emlog-FLY主题模板1.4版本免费完全开源
  12. 各种图片格式的生成工具(HTML、URL、BBCode、Markdown、Link)
  13. 基于LabVIEW的个性化打地鼠游戏设计
  14. JS中this是什么
  15. “道可道,非常道”——千年孤独话老子
  16. Windows 8.1核心版通过注册表启用Guest账号的局域网共享
  17. Java提供的网络支持
  18. javase(13)_网络编程
  19. MATLAB中物体夹角的检测
  20. 系列网络服务器机柜,什么是网络机柜 网络机柜和服务器机柜有哪些区别【详解】...

热门文章

  1. React Native使用指南-在设备上运行
  2. 现代软件工程系列 创新靠学分
  3. vue接收json数据_Vue之使用ajax获取json数据,并用v-for循环显示在表格中
  4. 白中英 计算机组成原理_计算机组成原理 第五版.立体化教材 白中英 大学教材...
  5. 从windows计算机中卸载office,如何彻底卸载电脑中的Office组件|Office办公软件卸载不干净怎么办...
  6. python做一个窗口样式_python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法...
  7. html中什么是语义,html – “语义正确”是什么意思?
  8. raft算法_Raft算法与实现
  9. pythonweb全栈开发_Web全栈开发穿插路程(python+js)
  10. java8 时间加一秒_Java8中对时间的处理