这两天处于考试模式,开启了学霸状态,直到刚才。。。。
继续node
1.HTTP客户端
http模块提供了两个函数http.request和http.get,功能是作为客户端向HTTP服务器发起请求。
http.request(option,callback)发起请求。option是一个类似关联数组的对象,表示请求的参数,callback是请求的回调函数。
option常用的参数如下所示:
host:请求网站的域名或ip地址。
port:请求网站的端口,默认是80.
method:请求方法,默认是get
请求的相对于根的路径,默认是“/”。Querytring应该包含在其中例如/search?query=zjx
headers:一个关联数组对象,求请求头的内容
callback传递一个参数,为http.ClientResponse的实例。
http.request返回一个http.ClientRequest实例。
下面是一个http.request发送post请求的代码
//httprequest.js
//httprequest.js
var http=require('http');
var querystring=require('querystring');
var contents=querystring.stringify({
name:'zjx',
email:'3324031**@qq.com',
address:'zjx22#216',
});
var options= {
host:'www.****.com',
path:'/application/node/post.js',
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()结束请求,否则服务器将不会接收到信息
http.get(options,callback)http模块还提供的一个更加简便的方法,http.get自动将请求设置成get,且不许要手动调用req.end();
var http=require('http');
http.get({host:'www.zjx**.com'},function(res){
res.serEncoding('utf-8');
res.on('data',function(data){
consolo.log(data);
});
});
http.ClientRequest
http.ClientRequest是由http.request或http.get返回产生的对象,表示一个已经产所而且正在进行中的http请求,提供了一个response事件,即http.request或http.get第二个参数指定的回调函数的绑定对象,可以显示的绑定这个事件监听函数:
//httpresponse.js
var http=require('http');
var req=http.get({host:'www.zjx***.com});
req.on('response',function(res){
res.setEncoding('utf-8');
res.on('data',function(data){
console.log(data);
});
});
http.ClientRequest像http.ServerResponse一样也提供了write和end函数,用于向服务器发送请求体,通常用于post,put等操作。所有写结束以后必须调用end函数以通知服务器,否则请求无效。http.ClientRequest还提供了一下函数。
request》abort():终止正在发送的请求。
request.setTimeout(timeout,[callback]);设置请求超时事件,timeout为毫秒书,请求超时以后,callback将被调用。
还有request.setNoDelay([noDelay]) , request.setSocketKeepAlive([enable],{initialDelay})等函数
http.ClientResponse
http.ClientResponse与http.ServerReuest 相以,提供了三个事件data end close 分别在数据到达、传输结束和链接结束时触发,其中data事件传递一个参数chunk表示接受到的数据。
http.ClientRespnose也提供了一些属性,用于表示请求的结果状态,参见表4-3
statusCode http状态码
httpVersion http协议版本 1.0或1.1
headers http请求头
trailers http请求尾
http.ClientResponse 还提供了一下几个特殊的函数。
response.setEncoding([encoding]):设置默认的编码,当data事件被触发时,数据将会以encoding编码
response.pause():暂停接受数据和发送事件,方便实现下载功能
response.resume():从暂停的状态中恢复。