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

来源:互联网 发布:ipad提示无法加入网络 编辑:程序博客网 时间:2024/06/05 17:06
               /*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);*/