Node.js HTTP客户端

一、简介

1、Node.js标准库提供了http模块,其中封装了一个HTTP客户端。

2、http.request是一个HTTP客户端工具,用于向HTTP服务器发起请求。

二、客户端向HTTP服务器发起请求的两个重要函数

1、http.request(options, callback) :发起HTTP请求。参数option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数。该函数返回一个http.ClientRequest的实例。

     option常用的参数如下:

     1)host:请求网站的域名或IP地址。

     2)port:请求网站的端口,默认80。

     3)method:请求方法,默认是GET。

     4)path:请求的相对于根的路径,默认是“/”。请求参数应该包含在其中。

     5)headers:一个关联数组对象,为请求头的内容。

     callback传递一个参数,为http.ClientResponse的实例。

     使用方式如下:

var http = require('http');
var querystring = require('querystring');

var contents = querystring.stringify({
	name: 'cdu09',
	email: 'cdu09@qq.com'
});
var options = {
	host: '127.0.0.1',
	path: '/application/node/post.php',
	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(data);
	});
});

req.write(contents);
req.end();

注意:不要忘了通过req.end()结束请求,否则服务器将不会收到信息。

2、http.get(options, callback):用于处理GET请求。它是http.request的简化版,唯一的区别在于http.get自动将请求方法设为了GET请求,同时不需要手动调用 req.end()。如下:

var http = require('http');

http.get({host: '127.0.0.1'}, function(res) {
	res.setEncoding('UTF-8');
	res.on('data', function (data) {
		console.log(data);
	});
});

三、http.ClientRequest对象

1、http.ClientRequest是由http.request或http.get返回产生的对象,表示一个已经产生而且正在进行中的HTTP请求。它提供一个response事件,即http.request或http.get第二个参数指定的回调函数的绑定对象。也可以显式地绑定这个事件的监听函数,如下:

var http = require('http');

var req = http.get({host: '127.0.0.1'});

req.on('response', function(res) {
	res.setEncoding('UTF-8');
	res.on('data', function (data) {
		console.log(data);
	});
});

2、http.ClientRequest与http.ServerResponse 一样也提供了write和end函数,用于向服务器发送请求体,通常用于POST、PUT等操作。所有写结束以后必须调用end函数以通知服务器,否则请求无效。

3、http.ClientRequest的函数request.abort():终止正在发送的请求。

4、http.ClientRequest的函数request.setTimeout(timeout, [callback]):设置请求超时时间,timeout为毫秒数。当请求超时以后,callback将会被调用。

5、还有request.setNoDelay([noDelay])、request.setSocketKeepAlive([enable], [initialDelay]) 等函数。

四、http.ClientResponse对象

1、http.ClientResponse与http.ServerRequest 相似,提供了三个事件data、end和close,分别在数据到达、传输结束和连接结束时触发,其中data事件传递一个参数chunk,表示接收到的数据。

2、http.ClientResponse提供了一些属性,用于表示请求的结果状态,如下图:

3、函数response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将会以encoding编码。默认值是null,即不编码,以Buffer的形式存储。

4、函数response.pause():暂停接收数据和发送事件。

5、函数response.resume():从暂停的状态中恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值