ClientRequest (ClientRequest) - Electron 中文開發手冊
發出HTTP / HTTPS請求。 Process: MainClientRequest實現可寫入流接口,因此是EventEmitter。
new ClientRequest(options)
options(Object | String) - 如果options是字符串,則將其解釋為請求URL。如果它是一個對象,則需要通過以下屬性完全指定一個HTTP請求:method字符串(可選) - HTTP請求方法。默認為GET方法。url字符串(可選) - 請求URL。必須以指定為http或https的協議方案以絕對形式提供。sessionObject(可選) - Session與請求關聯的實例。partition字符串(可選) - partition與請求關聯的名稱。缺省為空字符串。該session選項盛行於partition。因此,如果session明確指定a,partition則忽略。protocol字符串(可選) - 格式為'scheme:'的協議方案。目前支持的值是'http:'或'https:'。默認為'http:'。host 字符串(可選) - 作為主機名和端口號“主機名:端口”的串聯提供的服務器主機hostname 字符串(可選) - 服務器主機名。port 整數(可選) - 服務器的偵聽端口號。path 字符串(可選) - 請求URL的路徑部分。redirect字符串(可選) - 此請求的重定向模式。應該是其中之一follow,error或者manual。默認為follow。模式error為時,任何重定向都會中止。當模式是manual重定向將被推遲,直到request.followRedirect被調用。redirect在此模式下收聽該事件以獲取有關重定向請求的更多詳細信息。options如屬性protocol,host,hostname,port和path作為在所述的嚴格遵循Node.js的模型URL模塊。例如,我們可能已經創建了與'github.com'相同的請求,如下所示:
const request = net.request({ method: 'GET', protocol: 'https:', hostname: 'github.com', port: 443, path: '/' })
實例事件
Event: ‘response’
返回:response IncomingMessage - 表示HTTP響應消息的對象。
Event: ‘login’
返回:authInfo Object isProxy Booleanscheme Stringhost Stringport Integerrealm Stringcallback Function username Stringpassword String當身份驗證代理要求用戶憑證時發出。callback預計該功能將用用戶憑證回叫:username Stringpassword String
request.on('login', (authInfo, callback) => { callback('username', 'password') })
提供空憑證將取消該請求並在響應對象上報告身份驗證錯誤:
request.on('response', (response) => { console.log(`STATUS: ${response.statusCode}`); response.on('error', (error) => { console.log(`ERROR: ${JSON.stringify(error)}`) }) }) request.on('login', (authInfo, callback) => { callback() })
Event: ‘finish’
在最后一塊request數據被寫入request對象之后發射。
Event: ‘abort’
request中止時發射。如果該abort事件request已經關閉,該事件不會被解雇。
Event: ‘error’
返回:error 錯誤 - 提供有關失敗的一些信息的錯誤對象。當net模塊發出網絡請求失敗時發出。通常,當request對象發出一個error事件時,close事件將隨后跟隨,並且不會提供響應對象。
Event: ‘close’
作為HTTP請求 - 響應事務中的最后一個事件發出。該close事件表示不會再有事件發生在這些request或response對象上。
Event: ‘redirect’
返回:statusCode Integermethod StringredirectUrl StringresponseHeaders Object重定向時發射,模式為manual。調用request.followRedirect將繼續進行重定向。
Instance Properties
request.chunkedEncoding
Boolean指定將使用HTTP請求是否塊傳輸編碼或沒有。默認為false。該屬性是可讀寫的,但只能在第一次寫入操作之前設置,因為HTTP頭尚未放置在線上。chunkedEncoding在第一次寫入之后試圖設置屬性會引發錯誤。Using chunked encoding is strongly recommended if you need to send a large request body as data will be streamed in small chunks instead of being internally buffered inside Electron process memory.
Instance Methods
request.setHeader(name, value)
name String - An extra HTTP header name.value Object - An extra HTTP header value.添加一個額外的HTTP標頭。標題名稱將按照原樣發布,而不是壓縮。它只能在第一次寫入之前調用。在第一次寫入之后調用此方法將引發錯誤。如果傳遞的值不是a String,toString()則會調用其方法來獲取最終值。
request.getHeader(name)
name String - Specify an extra header name.Returns Object - The value of a previously set extra header name.
request.removeHeader(name)
name 字符串 - 指定一個額外的標題名稱。刪除以前設置的額外標題名稱。此方法只能在第一次寫入之前調用。在第一次寫入之后嘗試調用它會引發錯誤。
request.write(chunk[, encoding][, callback])
chunk(String | Buffer) - 請求主體數據的塊。如果它是一個字符串,它將使用指定的編碼轉換為一個Buffer。encoding字符串(可選) - 用於將字符串塊轉換為緩沖區對象。默認為'utf-8'。callback 函數(可選) - 寫操作結束后調用。callback實質上是一個為了保持與Node.js API相似性而引入的虛擬函數。在chunk內容傳送到Chromium網絡層后,它在下一個滴答聲中被異步調用。與Node.js實現相反,不保證chunk內容在callback被調用之前已經在線上刷新。向請求主體添加一大塊數據。第一次寫入操作可能會導致請求標頭在線上發出。第一次寫入操作后,不允許添加或刪除自定義標題。
request.end([chunk][, encoding][, callback])
chunk (字符串|緩沖區)(可選)encoding 字符串(可選)callback 功能(可選)發送請求數據的最后一個塊。后續的寫入或結束操作將不被允許。該finish事件在結束操作后立即發出。
request.abort()
取消正在進行的HTTP事務。如果請求已經發出close事件,則中止操作將不起作用。否則,正在進行的事件將發射abort和close事件。另外,如果有一個正在進行的響應對象,它將發出aborted事件。
request.followRedirect()
重定向模式為時,繼續執行任何延遲重定向請求manual。