UnityWebRequest
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相关推荐
- unity3d 切换网络_Unity3d新网络请求方式UnityWebRequest详解
Unity将要逐步放弃www网络请求api,新的api请求方式来临:UnityWebRequestThe,也正是本篇文章要给大家介绍的重点,那就是UnityWebRequestThe的使用详解. 旧的 ...
- unitywebrequest本地加载_Unity AudioSource加载本地.mp3文件/UnityWebRequest
关键字: Unity AudioSource本地Mp3文件加载 UnityWebRequestMultimedia.GetAudioClip() 新版本api UnityWebRequest.Get ...
- [专栏精选]UnityWebRequest详解
本文节选自洪流学堂公众号技术专栏<大话Unity2019>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 洪流学堂,让你快人几步.你好,我是郑洪智. 大智:"昨 ...
- Unity使用UnityWebRequest实现本地日志上传到web服务器
一.前言 Unity项目开发中,遇到bug的时候,我们一般是通过日志来定位问题,所以写日志到本地文件,或者把日志文件上传到web服务器这样的功能就很必要了.下面就介绍下如何实现日志写入本地文件和上传本 ...
- UnityWebRequest加载音频
Unity 官方API:Networking.UnityWebRequestMultimedia-GetAudioClip - Unity 脚本 API using UnityEngine; usin ...
- Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享
Unity 最新UnityWebRequest下载网络资源,支持断点续传.多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https://do ...
- Unity 使用UnityWebRequest问题小结
UnityWebRequest是自带的下载资源的api,优点显而易见:封装好,简单用,兼容性跨平台非常好.缺点也显而易见:可拓展性差 下载小文件通常使用下面的方法: public IEnumerato ...
- Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互
目录 在unity2021中,WWW的资源加载方式过时了,新的方法为UnityWebRequest BestHttp的Get方式和Post方式 部分API 在unity2021中,WWW的资源加载方式 ...
- UnityWebRequest断点下载文件
本文将运用UnityWebRequest来进行文件的断点下载. 断点下载顾名思义,就是在程序退出或者暂定下载把已经下载好的数据存储起来,在下一次下载时接着上一次开始下载,不需要重新下载,既节省时间又节 ...
- UnityWebRequest 下载服务器图片显示红色问号解决方案
unity版本:2019.4.31f1c1 问题描述:使用UnityWebRequest下载服务器图片放到UI上,图片不显示,显示一个红色的问号. 如图: 问号是一个8X8的图,unity自带的图片, ...
最新文章
- 在技术圈混,不知道这些你就 OUT 了
- python with open as yaml_python怎么解析yaml文件?
- javascript基础语法——词法结构
- 计网 --- 域名服务系统:因特网的目录服务
- 一日一技:在Ocelot网关中实现IdentityServer4密码模式(password)
- python开发【基础二】
- 数据的冗余和数据的完整性 1006
- 经纬度距离,修改系统时间,读取ini文件
- Forefront TMGUAG
- 【计算机网络笔记】物理层:概念传输媒体传输方式
- 阿里、Uber都在用的Flink你了解多少?
- 3D 锥形图表echarts
- 服务器安装固态硬盘的步骤,电脑安装固态硬盘及安装系统的详细教程
- 【MySQL】Online DDL详解
- 国产高人气无线蓝牙耳机测评,抖音火爆的蓝牙耳机值得入手吗?
- 2004年11月1号了
- 雷军与陈年是真爱:凡客即将“小米化”改造
- 为什么日本的网页设计风格还停留在90年代?
- IOS H5页面滑动过于频繁出现短暂白屏
- 从文艺青年到2B青年,轻博客的N种玩法
热门文章
- Android面试题基础集锦《一》
- 简单介绍 P3P 技术
- mybatis错误:Parameter 'companyName' not found. Available parameters are [arg3, arg2, arg1, arg0,..]
- Win 10下anaconda构建合适的气象环境
- 用python实现u盘密码加密
- 快速上手正则表达式RegularExpression(正则表达式常用笔记整理)
- MySQL 关于slave端Retrieved_Gtid_Set的读取改进初探
- c语言 bool 大小写,在C语言中使用bool
- c bool类型函数
- Autosar DataType介绍