类: ClientRequest
类: ClientRequest
发起 HTTP/HTTPS 请求。
进程:主进程,实用进程
此类并非从 'electron'
模块导出。 它仅作为 Electron API 中其他方法的返回值可用。
ClientRequest
实现了 Writable Stream 接口,因此是一个 EventEmitter。
new ClientRequest(options)
options
属性(例如 protocol
、host
、hostname
、port
和 path
)严格遵循 URL 模块中所述的 Node.js 模型。
例如,我们可以创建以下与 “github.com” 相同的请求
const request = net.request({
method: 'GET',
protocol: 'https:',
hostname: 'github.com',
port: 443,
path: '/'
})
实例事件
事件:'response'
返回
response
IncomingMessage - 表示 HTTP 响应消息的对象。
事件:'login'
返回
authInfo
对象isProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (可选)password
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()
})
事件:'finish'
刚好在 request
的最后一块数据写入到 request
对象之后发出。
事件:'abort'
当 request
被中止时发出。如果 request
已关闭,则不会触发 abort
事件。
事件:'error'
返回
error
Error - 一个错误对象,提供有关失败的一些信息。
当 net
模块无法发出网络请求时发出。通常,当 request
对象发出 error
事件时,随后将出现 close
事件,并且不会提供任何响应对象。
事件:'close'
作为 HTTP 请求-响应事务中的最后一个事件发出。 close
事件表示在 request
或 response
对象上不会再发出任何事件。
事件:'redirect'
返回
statusCode
Integermethod
stringredirectUrl
stringresponseHeaders
Record<string, string[]>
当服务器返回重定向响应时发出(例如,301 Moved Permanently)。调用 request.followRedirect
将继续重定向。 如果处理了此事件,则必须同步调用 request.followRedirect
,否则将取消请求。
实例属性
request.chunkedEncoding
一个 boolean
值,指定请求是否将使用 HTTP 分块传输编码。默认为 false。该属性是可读写的,但只能在第一次写入操作之前设置,因为 HTTP 标头尚未放在线路上。在第一次写入后尝试设置 chunkedEncoding
属性将引发错误。
如果您需要发送大型请求正文,强烈建议使用分块编码,因为数据将以小块流式传输,而不是在 Electron 进程内存中进行内部缓冲。
实例方法
request.setHeader(name, value)
name
string - 一个额外的 HTTP 标头名称。value
string - 一个额外的 HTTP 标头值。
添加额外的 HTTP 标头。标头名称将按原样发出,而不会转换为小写。它只能在第一次写入之前调用。在第一次写入后调用此方法将引发错误。如果传递的值不是 string
,则将调用其 toString()
方法以获取最终值。
某些标头被限制为不被应用程序设置。这些标头在下面列出。有关受限标头的更多信息,请参阅 Chromium 的标头实用工具。
Content-Length
Host
Trailer
或Te
Upgrade
Cookie2
Keep-Alive
Transfer-Encoding
此外,也不允许将 Connection
标头设置为值 upgrade
。
request.getHeader(name)
name
string - 指定额外的请求头名称。
返回 string
- 返回先前设置的额外请求头名称的值。
request.removeHeader(name)
name
string - 指定额外的请求头名称。
删除先前设置的额外请求头名称。此方法只能在第一次写入之前调用。在第一次写入之后尝试调用它将会抛出错误。
request.write(chunk[, encoding][, callback])
chunk
(string | Buffer) - 请求体数据的一个块。如果它是字符串,则使用指定的编码将其转换为 Buffer。encoding
string (可选) - 用于将字符串块转换为 Buffer 对象。默认为 'utf-8'。callback
Function (可选) - 在写入操作结束后调用。
callback
本质上是一个为了与 Node.js API 保持相似性而引入的虚拟函数。它在 chunk
内容被传递到 Chromium 网络层之后的下一个事件循环中异步调用。与 Node.js 实现不同,不保证在调用 callback
之前 chunk
的内容已被刷新到网络上。
向请求体添加数据块。第一次写入操作可能会导致请求头被发送到网络上。在第一次写入操作之后,不允许添加或删除自定义请求头。
request.end([chunk][, encoding][, callback])
chunk
(string | Buffer) (可选)encoding
string (可选)callback
Function (可选)
返回 this
。
发送请求数据的最后一个块。之后不允许再进行写入或结束操作。在结束操作后立即触发 finish
事件。
request.abort()
取消正在进行的 HTTP 事务。如果请求已经触发了 close
事件,则中止操作将不起作用。否则,正在进行的事件将触发 abort
和 close
事件。此外,如果存在正在进行的响应对象,它将触发 aborted
事件。
request.followRedirect()
继续任何挂起的重定向。只能在 'redirect'
事件期间调用。
request.getUploadProgress()
返回 Object
active
boolean - 请求当前是否处于活动状态。如果为 false,则不会设置其他属性started
boolean - 上传是否已开始。如果为 false,则current
和total
都将被设置为 0。current
Integer - 到目前为止已上传的字节数total
Integer - 此请求将要上传的字节数
你可以将此方法与 POST
请求结合使用,以获取文件上传或其他数据传输的进度。