您的位置:首页 > 理论基础 > 计算机网络

NodeJS http.ClientRequest & http.ClientResponse

2017-05-14 22:57 851 查看

http.ClientRequest

http.Client
request()方法
建立并返回
http.ClientRequest 对象


该对象代表一个进行中的请求(request),

该请求的消息头已经发送出去

要获得回应,

可以为request 对象增加一个
'response'事件的监听器。


response事件
将在request 对象接收到响应头的时候被触发,

response事件
的处理函数接收一个参数,

该参数是
http.ClientResponse
的实例。

response事件
中,

可以为
response 对象
增加监听器,

监听
data事件
尤为有用。

要记住,
response事件
是在接收到
回应信息体
之前被触发,

所以这里不需要担心信息体的第一部分不能被捕获。

只要在处理
response事件
过 程中增加
data事件监听器


信息体是肯定可以被捕获的。

// Good
request.on('response', function (response){
response.on('data', function (chunk){
console.log('BODY: ' + chunk);
});
});

// Bad - misses all or part of the body
request.on('response', function (response){
setTimeout(function (){
response.on('data', function (chunk){
console.log('BODY: ' + chunk);
});
}, 10);
});


这是一个可写流

如下是此对象可以触发的事件。

1. Event ‘response’

function (response) { }


在响应被接收后触发。

这个事件仅会被发出一次,

参数
response
http.ClientResponse
的实例。

request.write(chunk, encoding='utf8')


发送body 中的一块。

用户可以通过多次调用这个方法

将请求数据包通过流的方式发送到服务器。

在这个时候我 们建议使用在建立请求的时候把

['Transfer-Encoding', 'chunked']
放在请求头里。

参数
'chunk'
应当是一个数字索引的数组或字符串。

参数’encoding’是可选的,仅在chunk 为字符串的时使用。

1. request.end([data], [encoding])

完成本次请求的发送。

☆ 1.

如果消息体中的任何一个部分没有来得及发送,

request.end
将把他们全部刷新到流中。

☆ 2

如果本次请求是分块的,

这个函数将发出结束字符
'0\r\n\r\n'


如果使用参数data,就等于在调用request.write(data, encoding)之后紧接着调用request.end()。

http.ClientResponse

这个对象在使用
http.Client
发起请求时被创建,

它会以参数的形式传递给
request 对象'response'事件的响应函数
'response'实现了可读流的接口


1. Event: ‘data’

function (chunk) {}


当接收到
消息体
一部分的时候触发。

例如:

此方法有一个参数,

是消息体的一个块,

这个块的内容已经被解码成一个字符串。

信息体的编码通过
response.setBodyEncoding()
来设置。

2. Event: ‘end’

function () {}


该事件对于每个受到的消息会触发一次。

它没有参数,

在触发过这个事件后将不会再触发其他事件将了。

response.statusCode


一个三位数字所表示的HTTP 回应状态,比如404。

1. response.httpVersion

所连接到的服务器所使用HTTP 协议版本。

大致上是’1.1’或者’1.0’。

response.httpVersionMajor
则表示第一个数字
response.httpVersionMinor
表示第二个。

2. response.headers

http 信息头对象。

3. response.setEncoding(encoding=’null’)

设置回应信息体的编码,

'utf8'、'ascii'或者'binary'


默认值为空,

这表示
'data'
事件将会使用一个
Buffer 对象
作为 参数。

4. response.pause()

暂停response 触发事件。通常在控制一个下载动作时候使用。

5. response.resume()

恢复一个暂停的请求。

6. response.client

保存response 所属的http.Client 的引用。

总结

http.ClientRequest

事件

1.response

方法

1.request.end([data], [encoding])

http.ClientResponse

事件

data

end

方法

1. response.httpVersion

2. response.headers

3. response.setEncoding(encoding=’null’)

4. response.pause()

5. response.resume()

6. response.client
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nodejs