ClientRequest
发出HTTP / HTTPS请求。
Process: Main
ClientRequest
实现可写入流接口,因此是EventEmitter。
new ClientRequest(options)
options
(Object | String) - 如果options
是字符串,则将其解释为请求URL。如果它是一个对象,则需要通过以下属性完全指定一个HTTP请求:method
字符串(可选) - HTTP请求方法。默认为GET方法。url
字符串(可选) - 请求URL。必须以指定为http或https的协议方案以绝对形式提供。session
Object(可选) -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
ObjectisProxy
Booleanscheme
Stringhost
Stringport
Integerrealm
String
callback
Functionusername
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
。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com