Unity UnityWebRequest使用方法

  • 简介
  • 结构
  • 详情
    • 一、和WWW的区别
    • 二、构造方法
    • 三、封装的构造方法
    • 四、使用举例
      • Get()
      • Post()
      • 读取过程中显示进度

简介

UnityWebRequest 提供了一个模块化系统,用于构成 HTTP 请求和处理 HTTP 响应。

结构

  • UploadHandler: 处理数据到服务器的传输
  • DownloadHandler: 处理从服务器接收的数据的接收、缓冲和后处理
  • UnityWebRequest: 管理上面两个对象

详情

一、和WWW的区别

WWW和UnityWebRequest都用于处理Http请求,UnityWebRequest是后面出的用于替代WWW的模块。相比于WWW,UnityWebRequest支持设置timeout超时时间,支持断点续传,在一些复杂操作上也有更好的表现。

二、构造方法

  • public UnityWebRequest()
  • public UnityWebRequest(string url)
  • public UnityWebRequest(Uri uri)
  • public UnityWebRequest(string url, string method)
  • public UnityWebRequest(Uri uri, string method)
  • public UnityWebRequest(string url,string method,DownloadHandler downloadHandler,UploadHandler uploadHandler)
  • public UnityWebRequest(Uri uri,string method,DownloadHandler downloadHandler,UploadHandler uploadHandler)

三、封装的构造方法

  • UnityWebRequest.Get(string uri)
  • UnityWebRequest.Post(string uri, WWWForm formData)
  • UnityWebRequest.Delete(string uri)
  • UnityWebRequest.Head(string uri)
  • UnityWebRequest.Put(string uri, string bodyData)

上面这些方法是对构造方法的封装,上面列举的方法,它们自己还有其他的重载方法。
比如Get()还有UnityWebRequest.Get(Uri uri)重载方法,不过主要是这5个构造类型。
推荐使用这些封装的方法来构造。

四、使用举例

Get()

    private IEnumerator Get(){var request = UnityWebRequest.Get("http://www.baidu.com");yield return request.SendWebRequest();if (request.isHttpError || request.isNetworkError){Debug.LogError(request.error);}else{Debug.Log(request.downloadHandler.text);}}

Post()

    private IEnumerator Post(){//这里使用WWWForm来构建键值对。和WWW的使用是一致的WWWForm form = new WWWForm();form.AddField("key","value");UnityWebRequest webRequest = UnityWebRequest.Post("http://www.baidu.com",form);yield return webRequest.SendWebRequest();if (webRequest.isHttpError || webRequest.isNetworkError){Debug.LogError(webRequest.error);}else{Debug.Log(webRequest.downloadHandler.text);}}

读取过程中显示进度

显示进度要换种写法,如下

    private IEnumerator GetShowProgress(){UnityWebRequest request = UnityWebRequest.Get("www.baidu.com");request.SendWebRequest();while (!request.isDone){Debug.Log($"{GetType()} progress:{request.downloadProgress}");yield return null;}Debug.Log($"{GetType()} progress:{request.downloadProgress}");if (request.isNetworkError || request.isHttpError){Debug.LogError($"{GetType()} error:{request.error}");}else{Debug.Log($"{GetType()} text:{request.downloadHandler.text}");Debug.Log($"{GetType()} bytes.length:{request.downloadHandler.data.Length}");}}

Unity UnityWebRequest使用方法相关推荐

  1. UnityWebRequest使用方法

    一:Unity网络工具类: Unity原来有个Http访问的工具类WWW,在新版本的Unity中,推出了新的工具类UnityWebRequest,可以代替原来的WWW类.我们之后尽量使用UnityWe ...

  2. (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...

    原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...

  3. Unity插件使用方法

    Unity插件使用方法 EPPlus(Excel读写) Default Playables PlayableGraph Visuallizer Recorder(录屏工具) EPPlus(Excel读 ...

  4. Unity UnityWebRequest 下载封装

    Unity UnityWebRequest 下载封装 对unity原生的UnityWebRequest 进行二次封装 public void UnityWebRequestLoad<T>( ...

  5. Unity动画触发方法总结

    Unity动画触发方法总结 需求 UI动画希望玩家点击一次就播放一次 一.SetActive 这种情况需要在动画播放完毕后,将animator所在 gameobject设置为 inactive:或者在 ...

  6. Unity数据存储方法

    Unity数据存储方法 首先Unity中共有五种数据存储的方法, 一.PlayerPrefs 二.读取普通文本资源:TextAsset 三.Json 四.XML存储 五.Sqlite牵涉到的Sqlit ...

  7. Unity UnityWebRequest下载文件 替代WWW

    今天测试那边提了个问题,就是当网络极差的时候,游戏下载将会停止(即一直在等待yield return www)当时间较长时网络恢复将无法继续下载,也没有提示,需要重启才能重新下载.因为WWW不存在设置 ...

  8. Unity UnityWebRequest Get与Post应用

    学习目标: using LitJson; using Newtonsoft.Json; using System; using System.Collections; using System.Col ...

  9. Unity设置AppIcon方法

    制作unity自动打包工具时,不同的渠道需要不同的AppIcon,在网上找了方法,记录下 Unity4.6测试可用,Unity2017.2.0测试不可用 代码: public void SetDefa ...

  10. Unity性能优化方法总结

    1 资源分离打包与加载 游戏中会有很多地方使用同一份资源.比如,有些界面会共用同一份字体.同一张图集,有些场景会共用同一张贴图,有些会怪物使用同一个Animator,等等.可以在制作游戏安装包时将这些 ...

最新文章

  1. druid.io 海量实时OLAP数据仓库 (翻译+总结) (1)——分析框架如hive或者redshift(MPPDB)、ES等...
  2. 【python自动化第八篇:网络编程】
  3. caioj 1077 动态规划入门(非常规DP1:筷子)
  4. 当你所有的尝试告一段落
  5. NSURLConnection超时大坑
  6. ArcGIS下的多节点可达性分析
  7. Leetcode--200. 岛屿数量
  8. 平方剩余(例题+详解+代码模板)
  9. linux数据,Linux数据
  10. 霸榜6个月!超60000+程序员关注!这个 AI 课凭什么成为畅销经典?
  11. [转载] numpy.ma详解
  12. 【今日所得】1.29。。。
  13. 密码学(五):数字签名
  14. 【四二学堂】代码写诗之--《二十一杯酒》
  15. 批量保存网页为html文件的几种方法
  16. 博客留言外链是否有用?
  17. java workflow 教程_学习(史帝芬)osworkflow入门教程后的一些体会
  18. Andriod编程基础(一):Andriod的优势及光明前景
  19. 使用云主机,我们可以做哪些事情
  20. 数据结构视频教程 -《[猎豹网校]数据结构与算法_C#语言》

热门文章

  1. AD15实际工程的基本操作
  2. 杰里之AD15N 功能说明【篇】
  3. matlab 音频fftshift,matlab使用杂谈5-fftshift函数的使用
  4. 高数笔记(二十一):幂级数,函数展开成幂级数,傅里叶级数
  5. 拉格朗日插值的优缺点_拉格朗日插值法与牛顿插值法比较
  6. 微信小程序开发工具使用方法
  7. 调用网站第三方接口实现短信发邮件
  8. PHP+txt聊天室
  9. 【命令】截屏命令---screencap
  10. 浪潮服务器开启远程管理,最新浪潮服务器远程管理(27页)-原创力文档