1.UnityWebRequest介绍

UnityWebRequest封装了网络请求,支持http、https、file、和匿名ftp协议的请求以及处理。

UnityWebRequest请求相关元素

  • UploadHandler 处理数据 将数据发送到服务器的对象
  • DownloadHandler 从服务器接收数据的对象
  • UnityWebRequest 负责 HTTP 通信流量控制来管理上面两个对象的对象。

一次HTTP请求,一般流程如下:

1. 创建一个UnityWebRequest对象

2. 配置UnityWebRequest对象

2.1 设置headers

2.2 设置HTTP请求方式(例如GET,POST,HEAD)

3.(可选)创建一个UploadHandler添加到这个UnityWebRequest对象上面

3.1 提供上传的数据

3.2 提供上传的HTTP表单

4.(可选)创建一个DownloadHandler添加到这个UnityWebRequest对象上面

5. 发送UnityWebRequest请求(UnityWebRequest在调用SendWebRequest()方法之后才会真正执行请求)

6.(可选)从DownloadHandler里面读取接收到的数据

7.(可选)从UnityWebRequest对象读取error信息、HTTP状态码、相应头等信息。

2.UnityWebRequest常用方法:

1. public void Abort();

  • 立刻停止当前正在运行的UnityWebRequest对象,UnityWebRequest error返回为true,error属性将为“User Aborted
  • 没有调用SendWeRequest的UnityWebRequest对象,将在调用Send后,立刻停止。
  • 已遇到错误或者完成通信的UnityWebRequest对象,此方法无效。

2. public static string EscapeURL(string s);

某些文本字符在URL中存在时具有特殊含义。 如果需要在URL参数中包含这些字符,则必须使用转义序列表示它们。 建议您在将文本作为URL参数传递之前,对用户提供的任何文本使用此函数。 这将确保恶意用户无法操纵URL的内容来攻击Web服务器。 我们也可以使用UnityWebRequest.UnEscapeURL来将URL转译回来。

3. Dispose() 释放UnityWebRequest对象和它正在使用的资源。

因为Unity给我们提供了disposeDownloadHandlerOnDispose和disposeUploadHandlerOnDispose两个bool类型属性。

他们的默认值是true,也就是我们不需要设置Unity就会自动在完成后调用Dispose()释放资源。

3.UnityWebRequest常用属性:

属性名称 含义
url 定义UnityWebRequest与之通信的目标URI。
tiimeout 请求超过此值,终止请求
isHttpError 错误的HTTP响应代码大于或等于400后返回true。 (只读)错误类型的服务器返回代码(例如404 / Not Found和500 / Internal Server Error)反映在isHttpError属性中,而不是isNetworkError属性中。
isNetworkError 遇到系统错误后返回true,系统错误的示例包括无法解析DNS条目,套接字错误或超出重定向限制。 当此属性返回true时,error属性将包含描述错误的可读字符串。
downloadProgress

返回介于0.0和1.0之间的浮点值,指示从服务器下载正文数据的进度。

仅当服务器的响应包含Content-Length标头并且UnityWebRequest具有附加到downloadHandler属性的DownloadHandler时,此属性才有效。

如果UnityWebRequest已完成(成功或系统错误),则此属性将始终返回1.如果UnityWebRequest仍在与远程服务器通信,并且downloadHandler为null,则此属性将返回0.5。 如果尚未调用Send,则此属性将返回-1。

uploadProgress 返回介于0.0和1.0之间的浮点值,指示将数据上载到服务器的进度。如果UnityWebRequest完成(成功或系统错误),则此属性将始终返回1.如果UnityWebRequest仍在与远程服务器通信,并且uploadHandler为null,则此属性将返回零。 如果尚未调用Send,则此属性将返回-1。
error

一个可读的字符串,描述此UnityWebRequest对象在处理HTTP请求或响应时遇到的任何系统错误。 (只读)

如果UnityWebRequest未遇到系统错误,则此属性将返回null。 系统错误的示例包括套接字错误,解析DNS条目的错误或超出的重定向限制。

注意:来自服务器的错误类型返回码(例如404 / File Not Found或500 / Internal Server Error)不被视为系统错误。默认值:null。

isDone

UnityWebRequest完成与远程服务器通信后返回true。 (只读)

当UnityWebRequest成功完成或遇到系统错误时,此属性将返回true。 DownloadHandler(如果有)的所有后期下载处理将在此属性返回true之前完成。

3.相关类:

DownloadHandler派生出以下类,附加到UnityWebRequest对象中,请求完成后,可直接把下载后的数据转化为Unity可用的Object对象。

例如下载音频:

using (UnityWebRequest uwr = new UnityWebRequest(url)){DownloadHandlerAudioClip downloadAudioClip = new DownloadHandlerAudioClip(url, AudioType.WAV);uwr.downloadHandler = downloadAudioClip;yield return uwr.SendWebRequest();AudioClip audioClip = null;string text = null;if (!(uwr.isNetworkError || uwr.isHttpError)){audioClip = downloadAudioClip.audioClip;}else{text = uwr.error;}if (actionResult != null){actionResult.Invoke((uwr.isNetworkError || uwr.isHttpError), text, audioClip);}}

Ps:

使用无BOM的UTF8编码的文件进行数据传递。

参考:

https://www.jianshu.com/p/8631ae7dd653

https://blog.csdn.net/qwe25878/article/details/85051911

https://docs.unity3d.com/560/Documentation/Manual/UnityWebRequest.html#UsingLLAPI

https://www.shijunzh.com/archives/1162

UnityWebRequest相关推荐

  1. unity3d 切换网络_Unity3d新网络请求方式UnityWebRequest详解

    Unity将要逐步放弃www网络请求api,新的api请求方式来临:UnityWebRequestThe,也正是本篇文章要给大家介绍的重点,那就是UnityWebRequestThe的使用详解. 旧的 ...

  2. unitywebrequest本地加载_Unity AudioSource加载本地.mp3文件/UnityWebRequest

    关键字:  Unity AudioSource本地Mp3文件加载 UnityWebRequestMultimedia.GetAudioClip() 新版本api UnityWebRequest.Get ...

  3. [专栏精选]UnityWebRequest详解

    本文节选自洪流学堂公众号技术专栏<大话Unity2019>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 洪流学堂,让你快人几步.你好,我是郑洪智. 大智:"昨 ...

  4. Unity使用UnityWebRequest实现本地日志上传到web服务器

    一.前言 Unity项目开发中,遇到bug的时候,我们一般是通过日志来定位问题,所以写日志到本地文件,或者把日志文件上传到web服务器这样的功能就很必要了.下面就介绍下如何实现日志写入本地文件和上传本 ...

  5. UnityWebRequest加载音频

    Unity 官方API:Networking.UnityWebRequestMultimedia-GetAudioClip - Unity 脚本 API using UnityEngine; usin ...

  6. Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享

    Unity 最新UnityWebRequest下载网络资源,支持断点续传.多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https://do ...

  7. Unity 使用UnityWebRequest问题小结

    UnityWebRequest是自带的下载资源的api,优点显而易见:封装好,简单用,兼容性跨平台非常好.缺点也显而易见:可拓展性差 下载小文件通常使用下面的方法: public IEnumerato ...

  8. Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互

    目录 在unity2021中,WWW的资源加载方式过时了,新的方法为UnityWebRequest BestHttp的Get方式和Post方式 部分API 在unity2021中,WWW的资源加载方式 ...

  9. UnityWebRequest断点下载文件

    本文将运用UnityWebRequest来进行文件的断点下载. 断点下载顾名思义,就是在程序退出或者暂定下载把已经下载好的数据存储起来,在下一次下载时接着上一次开始下载,不需要重新下载,既节省时间又节 ...

  10. UnityWebRequest 下载服务器图片显示红色问号解决方案

    unity版本:2019.4.31f1c1 问题描述:使用UnityWebRequest下载服务器图片放到UI上,图片不显示,显示一个红色的问号. 如图: 问号是一个8X8的图,unity自带的图片, ...

最新文章

  1. 在技术圈混,不知道这些你就 OUT 了
  2. python with open as yaml_python怎么解析yaml文件?
  3. javascript基础语法——词法结构
  4. 计网 --- 域名服务系统:因特网的目录服务
  5. 一日一技:在Ocelot网关中实现IdentityServer4密码模式(password)
  6. python开发【基础二】
  7. 数据的冗余和数据的完整性 1006
  8. 经纬度距离,修改系统时间,读取ini文件
  9. Forefront TMGUAG
  10. 【计算机网络笔记】物理层:概念传输媒体传输方式
  11. 阿里、Uber都在用的Flink你了解多少?
  12. 3D 锥形图表echarts
  13. 服务器安装固态硬盘的步骤,电脑安装固态硬盘及安装系统的详细教程
  14. 【MySQL】Online DDL详解
  15. 国产高人气无线蓝牙耳机测评,抖音火爆的蓝牙耳机值得入手吗?
  16. 2004年11月1号了
  17. 雷军与陈年是真爱:凡客即将“小米化”改造
  18. 为什么日本的网页设计风格还停留在90年代?
  19. IOS H5页面滑动过于频繁出现短暂白屏
  20. 从文艺青年到2B青年,轻博客的N种玩法

热门文章

  1. Android面试题基础集锦《一》
  2. 简单介绍 P3P 技术
  3. mybatis错误:Parameter 'companyName' not found. Available parameters are [arg3, arg2, arg1, arg0,..]
  4. Win 10下anaconda构建合适的气象环境
  5. 用python实现u盘密码加密
  6. 快速上手正则表达式RegularExpression(正则表达式常用笔记整理)
  7. MySQL 关于slave端Retrieved_Gtid_Set的读取改进初探
  8. c语言 bool 大小写,在C语言中使用bool
  9. c bool类型函数
  10. Autosar DataType介绍