UnityWebRequest

UnityWebRequest提供了一套标准的系统模块,来完成Http请求和Http响应,它的基本目标就是满足unity游戏与web后端服务的交互。它另外还支持一些http高级的功能,比如chunked http请求。(数据分块传输),流式 POST/PUT操作,以及操作Http包头和其它的http行为,比如delete,get等。

UnityWebRequest主要有两部分组成:

  • 高级API(HLAPI  High Level API): 它封装了低级API的接口,提供的接口,使用起来更加友好和方便。
  • 低级API(LLAPI Low Level API) : 它为高级使用者提供了最大程度的灵活性。

UnityWebRequest支持的平台:

  • 所有的Unity Editor平台和所有的独立运行的应用
  • WebGL
  • 移动平台:IOS,Android
  • 通用的Window平台
  • PS4和PSVita
  • XboxOne
  • Nintendo Switch

UnityWebRequest 系统的结构

它将一个Http请求的事务分解成了三个不同的操作:

  • 向服务端提供数据
  • 从服务端获取数据
  • Http流控制(比如重定向,错误捕获等)

为了向高级用户提供友好方便的接口支持,这些操作被封装到各自所属的对象里面:

  • UploadHandler 负责向服务端发送数据
  • DownloadHandler 负责接收,缓存和处理从服务器接收的数据
  • UnityWebRequest 负责管理其它的两个对象,并且实现Http流的控制操作。在这个对象中,可以自定义Headers信息,URLs,以及存储错误和重定向信息。

如下图所示:

使用UnityWebRequest,对于任何一个Http请求事务,通常的代码流程是这样的:

  • 创建一个Web请求对象
  • 配置Web请求对象:设置自定义的Headers,设置Http行为比如GET,POST,HEADER (注意,自定义行为除了安卓平台,其它平台都支持),然后设置请求的URL。
  • (操作)创建一个Upload Handler 并且和Web Request绑定:提供请求的参数数据,或者提供要提交的表单数据
  • (操作)创建一个Download Handler并且和Web Request绑定
  • 发送Web Request,如果是在一个协程中,你需要yield Send()方法的结果,然后等待请求的完成
  • (操作)读取从Download Handler中接收的数据
  • (操作)从UnityWebRequest对象中读取错误信息,Http状态码以及响应的包头信息。
原文地址:https://www.cnblogs.com/wgslucky/p/11523529.html