与 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
对象负责接收、缓冲和后处理从服务器接收的数据
- 一个
UnityWebRequest
对象管理另外两个对象,并处理 HTTP 流量控制。此对象是定义自定义标头和 URL 的地方,也是存储错误和重定向信息的所在。
对于任何 HTTP 事务,正常的代码流程是
- 创建一个 Web 请求对象
- 配置 Web 请求对象
- 设置自定义标头
- 设置 HTTP 动词(例如 GET、POST、HEAD - 除 Android 外的所有平台都允许使用自定义动词)
- 设置 URL
- (可选)创建一个 Upload Handler 并将其附加到 Web 请求
- (可选)创建一个 Download Handler 并将其附加到 Web 请求
- 发送 Web 请求
- 如果在协程中,你可以 Yield
Send()
调用的结果以等待请求完成
- (可选)从 Download Handler 读取接收到的数据
- (可选)从 UnityWebRequest 对象读取错误信息、HTTP 状态码和响应标头