UnityWebRequest

 二维码 92
发表时间:2019-09-22 23:41

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状态码以及响应的包头信息。


一段代码一杯茶,请点击支持一下

QQ截图20190922232859.png

文章分类: Unity3d
分享到: