NodeJS http.ClientRequest & http.ClientResponse

http.ClientRequest

http.Clientrequest()方法建立并返回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) { }

在响应被接收后触发。
这个事件仅会被发出一次,
参数responsehttp.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值