非常教程

Electron参考手册

ClientRequest

ClientRequest

发出HTTP / HTTPS请求。

Process: Main

ClientRequest实现可写入流接口,因此是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字符串(可选) - 此请求的重定向模式。应该是其中之一followerror或者manual。默认为follow。模式error为时,任何重定向都会中止。当模式是manual重定向将被推迟,直到request.followRedirect被调用。redirect在此模式下收听该事件以获取有关重定向请求的更多详细信息。

options如属性protocolhosthostnameportpath作为在所述的严格遵循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 Boolean
    • scheme String
    • host String
    • port Integer
    • realm String
  • callback Function
    • username String
    • password String

当身份验证代理要求用户凭证时发出。

callback预计该功能将用用户凭证回叫:

  • username String
  • password 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事件表示不会再有事件发生在这些requestresponse对象上。

Event: ‘redirect’

返回:

  • statusCode Integer
  • method String
  • redirectUrl String
  • responseHeaders 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 StringtoString()则会调用其方法来获取最终值。

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事件,则中止操作将不起作用。否则,正在进行的事件将发射abortclose事件。另外,如果有一个正在进行的响应对象,它将发出aborted事件。

request.followRedirect()

重定向模式为时,继续执行任何延迟重定向请求manual

ClientRequest相关

Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9

Electron目录

1.指南 | Guides
2.指南·开发 | Guides: Development
3.Webview 组件 |
4.加速器 | Accelerator
5.API
6.API·对象 | API·Objects
7.app
8.autoUpdater
9.浏览器总览 | BrowserView
10.浏览器窗口 | BrowserWindow
11.浏览器窗口代理 | BrowserWindowProxy)
12.ClientRequest
13.剪贴板 | clipboard
14.内容追踪 | contentTracing
15.小型文字档案 | Cookies
16.crashReporter
17.调试器 | Debugger
18.desktopCapturer
19.dialog
20.电子下载 | DownloadItem
21.环境变量 | Environment Variables
22.无框窗口 | Frameless Window
23.globalShortcut
24.IncomingMessage
25.ipcMain
26.IPC渲染器 | ipcRenderer
27.语言环境 | Locales
28.画面 | Menu
29.MenuItem
30.本地图像 | nativeImage
31.net
32.通知 | Notification
33.权限监控 | powerMonitor
34.权限存储拦截器 | powerSaveBlocker
35.处理 | process
36.协议 | protocol
37.远程 | remote
38.sandbox
39.屏幕 | screen
40.会话 | session
41.shell
42.系统表现 | systemPreferences
43.触摸板 | TouchBar
44.触摸板按钮 | TouchBarButton
45.触摸板颜色选择器 | TouchBarColorPicker
46.触摸板组 | TouchBarGroup
47.触摸板标签 | TouchBarLabel
48.触摸板弹出框 | TouchBarPopover
49.触摸板清理 | TouchBarScrubber
50.触摸板分段控制 | TouchBarSegmentedControl
51.触摸板滑块 | TouchBarSlider
52.触摸板间隔 | TouchBarSpacer
53.Tray
54.网页内容 | webContents
55.网页框架 | webFrame
56.网页要求 | WebRequest
57.窗口开启 | window.open