node.js学习笔记之HTTP客户端

               /*http客户端*/
/*
* 1、在HTTP模块中,可以使用request方法向其他网站请求数据,使用方法如下
*       var req = http.request(options,callback)
*       options是一个对象或者字符串,用于指定目标的UrL地址
*       callback函数为  function(response){
*                           //response:可以利用该对象来读取相应流参数
*                       }
*2、使用request方法后,可以用http.ClientRequest对象的write对象向目标网站发送数据
*        request.write(chunk,[encoding])
*           其中chunk用于指定发送的内容,encoding指定如何编码字符串
*3、 可以用http.ClientRequest对象的end方法来结束本次请求
*        request.end([chunk],[encoding]);
*4、可以用http.ClientRequest对象的abort方法来终止请求
*        request.abort();
*5、http.ClientRequest对象的错误事件
*           request.on('error',function(err){
*               //事件回调函数代码
*           })
* 6、在建立连接过程中,当为该端口分配端口时,触发http.ClientRequest对象的socket事件
*          request.on('socket',function(socket){
*               //事件回调代码
*          })
* 7、可以在http.ClientRequest对象的socket事件的回调函数中,使用socket端口的setTimeout方法指定socket的超时时间
*           然后监听timeout事件,在回调函数中指定当超时时使用http.ClientRequest对象的abort方法终止请求
*           req.on('cocket',function (socket) {
                socket.setTimeout(1000);
                socket.on('timeout',function () {
                    req.abort();
                });
            });
  8、由于超时终止请求将会触发错误,因此需要绑定error事件
*
* */

/*使用setTimeout方法设置端口超时时间*/

/*var http = require('http');
var options={
    hostname:'www.amicrosoft.cn',
    port:80,
    path:'/',
    method:'GET'
};
//下面一句也可以这样写var req = http.get(options,function (res) {
//使用get请求数据时不用写end方法,系统将自动调用。其他和request一样
var req = http.request(options,function (res) {
    console.log('状态码:'+res.statusCode);
    console.log('响应头:'+JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data',function (chunk) {
        console.log('相应内容:'+chunk);
    });
});
//设置超时时间
req.setTimeout(1000,function () {
    req.abort();
});

req.on('error',function (err) {
    if(err.code == 'ECONNRESET'){
        console.log('socket端口超时');
    }
    else
        console.log('在请求数据过程中发生错误,错误代码为:'+err.code);
});
req.end();*/

/*向本地服务器请求数据*/

服务器端:

var http = require('http');
var server = http.createServer(function (req, res) {
    if(req.url != '/favicon.ico'){
        req.on('data',function (data) {
            console.log('服务器端接收到数据:'+data);
            res.end();
        });
    }
}).listen(3000);
/*客户端*/
var http = require('http');
var options = {
    hostname:'localhost',
    port:3000,
    path:'/',
    method:'POST'
};
var req = http.request(options);
req.write('您好');
req.end();

/*制作代理服务器*/


/*var http = require('http');
var url = require('url');
var server = http.createServer(function (sreq, sres) {
    var url_parts = url.parse(sreq.url);
    var opt = {
        host:'www.amazon.cn',
        port:80,
        path:url_parts.pathname,
        headers:sreq.headers
    }
    var creq = http.request(opt,function (cres) {
        sres.writeHead(cres.statusCode,cres.headers);
        cres.pipe(sres);
    });
    sreq.pipe(creq);
}).listen(3000);*/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值