http.ClientRequest

2018-07-11 09:48 更新

http.Client 的request()方法建立并返回http.ClientRequest 對象。該對象代表一個進(jìn)行中的請求(request),該請求的消息頭已經(jīng)發(fā)送出去。

要獲得回應(yīng),可以為request 對象增加一個'response'事件的監(jiān)聽器。‘response’事件將在request 對象接收到響應(yīng) 頭的時候被觸發(fā),'response'事件的處理函數(shù)接收一個參數(shù),該參數(shù)是http.ClientResponse 的實例。

在'response'事件中,可以為response 對象增加監(jiān)聽器,監(jiān)聽'data'事件尤為有用。要記住,'response'事件是在接 收到回應(yīng)信息體之前被觸發(fā),所以這里不需要擔(dān)心信息體的第一部分不能被捕獲。只要在處理'response'事件過 程中增加'data'事件監(jiān)聽器,信息體是肯定可以被捕獲的。

// 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);
});

這是一個可寫流

如下是此對象可以觸發(fā)的事件。

Event 'response'

function (response) { }

在響應(yīng)被接收后觸發(fā)。這個事件僅會被發(fā)出一次,參數(shù)response 是http.ClientResponse 的實例。

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

發(fā)送body 中的一塊。用戶可以通過多次調(diào)用這個方法將請求數(shù)據(jù)包通過流的方式發(fā)送到服務(wù)器。在這個時候我 們建議使用在建立請求的時候把['Transfer-Encoding', 'chunked']放在請求頭里。 參數(shù)'chunk'應(yīng)當(dāng)是一個數(shù)字索引的數(shù)組或字符串。

參數(shù)'encoding'是可選的,僅在chunk 為字符串的時使用。

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

完成本次請求的發(fā)送。如果消息體中的任何一個部分沒有來得及發(fā)送,request.end 將把他們?nèi)克⑿碌搅髦小?如果本次請求是分塊的,這個函數(shù)將發(fā)出結(jié)束字符'0\r\n\r\n'。

如果使用參數(shù)data,就等于在調(diào)用request.write(data, encoding)之后緊接著調(diào)用request.end()。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號