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 http.ServerRequest & http.ServerResponse
- Nodejs HTTP请求的超时处理(Nodejs HTTP Client Request Timeout Handle)
- HttpClient(4.3.5) - HTTP Request & HTTP Response
- node.js http中请求request和响应response信息说明
- nodejs request & response 对象
- Node.js中的http请求客户端示例(request client)
- Nodejs HTTP请求的超时处理 Nodejs HTTP Client Request Timeout Handle
- Using HTTP Proxy in Node.js with request package
- node.js中的http.response.removeHeader方法使用说明
- node.js中的http.response.writeHead方法使用说明
- node.js中的http.response.write方法使用说明
- node.js中的http.response.end方法使用说明
- HttpResponse response = new DefaultHttpClient().execute(request)抛IOException
- send a client certificate by using the HttpWebRequest and HttpWebResponse classes
- node.js中的http.response.removeHeader方法使用说明
- node.js中的http.response.setHeader方法使用说明
- node.js中的http.response.getHeader方法使用说明
- Nodejs + request + zlib 处理压缩格式http返回数据
- Spring 3.x MVC 入门4 -- @ResponseBody & @RequestBody &HttpMessageConverter
- node.js第11课(HTTPclient)