Version: 6000.3
语言: 中文
收益率指令参考
常见作:使用 HLAPI

与 Web 服务器交互

UnityWebRequest 提供了一个模块化系统,用于撰写 HTTP 请求和处理 HTTP 响应。UnityWebRequest 系统的主要目标是允许 Unity 游戏与 Web 浏览器后端进行交互。它还支持高要求的功能,例如分块 HTTP 请求、流式 POST/PUT作以及对 HTTP 标头和动词的完全控制。

该系统由两层组成:

  • 高级 API (HLAPI) 包装了低级 API,并提供了一个方便的接口来执行常见作
  • 低级 API (LLAPI) 为更高级的用户提供了最大的灵活性

支持的平台

UnityWebRequest 系统支持大多数 Unity 平台:

  • 所有版本的编辑器和独立播放器
  • 移动平台:iOS、Android
  • 通用 Windows 平台

建筑

UnityWebRequest 生态系统将 HTTP 事务分解为三个不同的作:

  • 向服务器提供数据
  • 从服务器接收数据
  • HTTP 流控制(例如,重定向和错误处理)

为了为高级用户提供更好的界面,这些作都由自己的对象管理:

  • UploadHandler对象处理向服务器传输数据
  • 一个DownloadHandler对象处理从服务器接收的数据的接收、缓冲和后处理
  • 一个UnityWebRequestobject 管理其他两个对象,并处理 HTTP 流控制。此对象是定义自定义标头和 URL 的位置,以及存储错误和重定向信息的位置。
从用户代码发送的数据在到达 HTTP Web 服务器之前会经过 UploadHandler,然后是 UnityWebRequest。从服务器接收的数据在到达用户代码之前会先经过 UnityWebRequest,然后是 DownloadHandler。
从用户代码发送的数据在到达 HTTP Web 服务器之前会经过 UploadHandler,然后是 UnityWebRequest。从服务器接收的数据在到达用户代码之前会先经过 UnityWebRequest,然后是 DownloadHandler。

对于任何 HTTP 事务,正常的代码流是:

  • 创建 Web 请求对象
  • 配置 Web 请求对象
    • 设置自定义标题
    • 设置 HTTP 谓词(例如 GET、POST、HEAD - 除 Android 之外的所有平台都允许使用自定义谓词)
    • 设置 URL
  • (可选)创建上传处理程序并将其附加到 Web 请求
    • 提供要上传的数据
    • 提供要上传的 HTTP 表单
  • (可选)创建下载处理程序并将其附加到 Web 请求
  • 发送 Web 请求
    • 如果在协程中,您可以产生Send()调用等待请求完成
  • (可选)从下载处理程序读取接收的数据
  • (可选)从 UnityWebRequest 对象读取错误信息、HTTP 状态代码和响应标头
收益率指令参考
常见作:使用 HLAPI