node.js第11课(HTTP客户端)



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

//客户端请求
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('向客户端返回');
   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():以暂停的状态中恢复
 
           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值