赞
踩
UnityWebRequest封装了网络请求,支持http、https、file、和匿名ftp协议的请求以及处理。
UnityWebRequest请求相关元素
一次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状态码、相应头等信息。
1. public void Abort();
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()释放资源。
属性名称 | 含义 |
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之前完成。 |
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。