http.ClientRequest 类

此对象从 http.request() 内部创建并返回。 它表示正在进行的请求,其请求头已进入队列。 请求头仍然可以使用 setHeader(name, value)getHeader(name)removeHeader(name) 改变。 实际的请求头将与第一个数据块一起发送,或者在调用 request.end() 时发送。

要获得响应,请为请求对象添加 'response' 事件监听器。 收到响应头后,将从请求对象触发 'response' 事件。 'response' 事件有一个参数,该参数是 http.IncomingMessage 的一个实例。

'response' 事件期间,可以向监听对象添加监听器,比如监听 'data' 事件。

如果没有添加 'response' 事件处理函数,则响应将被完全丢弃。 但是,如果添加了 'response' 事件处理函数,那么必须消耗响应对象中的数据,方法是每当有 'readable' 事件时调用、或者添加 'data' 事件处理函数、或者通过调用 .resume() 方法。 在消耗完数据之前,'end' 事件不会触发。 此外,在读取数据之前,它将占用内存,最终可能导致进程内存不足的错误。

Node.js 不检查 Content-Length 和已传输的正文的长度是否相等。


This object is created internally and returned from http.request(). It represents an in-progress request whose header has already been queued. The header is still mutable using the setHeader(name, value), getHeader(name), removeHeader(name) API. The actual header will be sent along with the first data chunk or when calling request.end().

To get the response, add a listener for 'response' to the request object. 'response' will be emitted from the request object when the response headers have been received. The 'response' event is executed with one argument which is an instance of http.IncomingMessage.

During the 'response' event, one can add listeners to the response object; particularly to listen for the 'data' event.

If no 'response' handler is added, then the response will be entirely discarded. However, if a 'response' event handler is added, then the data from the response object must be consumed, either by calling whenever there is a 'readable' event, or by adding a 'data' handler, or by calling the .resume() method. Until the data is consumed, the 'end' event will not fire. Also, until the data is read it will consume memory that can eventually lead to a 'process out of memory' error.

Node.js does not check whether Content-Length and the length of the body which has been transmitted are equal or not.

The request inherits from [Stream][], and additionally implements the following: