一、http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求。

    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('请求到来,解析參数');

 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,'127.0.0.1');

//client请求

var contents=querystring.stringify({

 nane:'octopus',

 age:20,

 address:'beijing'

});

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);

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('向client返回');

   res.end(params.query.name);

 }).listen(3000);

http.get({

   'host':'localhost',

   path:'/user?name=octopus&age=20',

   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第11课(HTTPclient)的更多相关文章

  1. CentOS 下安装 Node.js 8.11.3 LTS Version

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google Chrome V8 JavaScript引擎,简单说是运行在服务端的 JavaScript.下面我们来演示一下Cen ...

  2. node.js第十课(HTTPserver)

     概念:Node.js提供了http模块.当中封装了一个高效的HTTPserver和一个简单的HTTPclient.     http.server是一个基于事件的HTTP服务器.内部用C++实现 ...

  3. Node.js学习(11)----HTTP服务器与客户端

    Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js ...

  4. Node.js 2017.11.5-2017.11.16期间制作的图片爬虫总结

    2017年11月18日12:33:06

  5. node.js初识11

    1.EJS  Embedded JavaScript templates 模板引擎 .EJS的效率不高,因为他后台是通过字符串来处理的 <ul> <% for(var i = 0 ; ...

  6. Node.js实战11:fs模块初探。

    fs模块封装了对文件操作的各种方法,比如同步和异步读写.批量操作.流.监听. 我们还是通常例程学习, 获取目录下的文件清单: var fs =require("fs"); fs.r ...

  7. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  8. Node.js 爬虫,自动化抓取文章标题和正文

    持续进行中... 目标: 动态User-Agent模拟浏览器 √ 支持Proxy设置,避免被服务器端拒绝 √ 支持多核模式,发挥多核CPU性能 √ 支持核内并发模式 √ 自动解码非英文站点,避免乱码出 ...

  9. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

随机推荐

  1. mysql数据库主从同步复制原理

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...

  2. tensorflow高级库

    1.tf.app.flags tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv.tf.app.flags.DEFINE_xxx()就是添加命令行的optional a ...

  3. TIAGo ROS模拟教程2 - 自主机器人导航

    TIAGo ROS Simulation Tutorial 2 – Autonomous robot navigation TIAGo ROS模拟教程2 - 自主机器人导航 发表于 12月 23,20 ...

  4. Ad Hoc Distributed Queries的启用与关闭

    启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1 reconfigure exec sp_config ...

  5. Emacs 启动优化二三事

    Emacs 启动优化二三事 */--> div.org-src-container { font-size: 85%; font-family: monospace; } p {font-siz ...

  6. JS格式化时间并比较

    JS格式化时间,然后进行比较.工作遇到的情况,然后网上找到的,记下来,下次用! </head> <body> <button onclick="myFuncti ...

  7. SQL之PROCEDURE(存储过程)

    先来看一小段代码 create procedure pr_bank(@bank_id int) as BEGIN select *from bank where bank_ID = @bank_id ...

  8. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采取连接池技术,来共享连接Conne ...

  9. 【51nod】1709 复杂度分析

    题解 考虑朴素的暴力,相当于枚举u点的每个祖先f,然后统计一下这个点f除了某个儿子里有u的那个子树之外的节点个数,乘上f到u距离的二进制1的个数 那么我们用倍增来实现这个东西,每次枚举二进制的最高位j ...

  10. redis 发布/订阅 模式

    发布/订阅模式的命令如下: * 进入发布订阅模式的客户端,不能执行除发布订阅模式以上命令的其他命令,否则出错.