当前位置: 首页 > news >正文

中国建筑网信息网广州seo学徒

中国建筑网信息网,广州seo学徒,网站制作的服务商,洛阳企业网站建设复习UnityWebRequest 介绍下载文件和上传文件下载进度和异常验证文件DownloadHandlerScript 介绍 unity中使用UnityWebRequest来代替所有HTTP请求提供了三种API,UnityWebRequest.Get,UnityWebRequest.Post,UnityWebRequest.Put分别处理GET,POST,PUT请求…

复习UnityWebRequest

  • 介绍
    • 下载文件和上传文件
    • 下载进度和异常
    • 验证文件
    • DownloadHandlerScript

介绍

unity中使用UnityWebRequest来代替所有HTTP请求提供了三种API,UnityWebRequest.Get,UnityWebRequest.Post,UnityWebRequest.Put分别处理GET,POST,PUT请求。UnityWebRequest需要配合协程使用,所有HTTP请求都是异步的,可以方便监听请求结果,默认情况支持HTTPS,如果需要支持HTTP,则需要单独开启,Player Settings中需要Allow downkiads over HTTP。

基本代码如下所示:

IEnumerable Start(){//GET请求UnityWebRequest quest01 = UnityWebRequest.Get("http://www.baidu.com");yield return quest01.SendWebRequest();var data01 = quest01.downloadHandler.text;//POST请求WWWForm form = new WWWForm();form.AddField("", "");UnityWebRequest quest02 = UnityWebRequest.Post("http://www.baidu.com", form);yield return quest02.SendWebRequest();var data02 = quest01.downloadHandler.text;//PUT请求byte[] myData = Encoding.UTF8.GetBytes("Test");UnityWebRequest quest03 = UnityWebRequest.Put("http://www.baidu.com",myData);yield return quest03.SendWebRequest();var data03 = quest03.downloadHandler.text;}

下载文件和上传文件

UnityWebRequest配合DownloadHandler可以处理下载文件,配合一下UploadHandler可以处理上传文件,但是下载文件的类型比较多,Unity又进一步封装,代码如下:

  //下载二进制文件UnityWebRequest request04 = UnityWebRequest.Get("");request04.downloadHandler = new DownloadHandlerFile("");yield return request04.SendWebRequest();byte[] data04 = request04.downloadHandler.data;//下载AB包UnityWebRequest quest05 = UnityWebRequest.Get("");quest05.downloadHandler = new DownloadHandlerAssetBundle("",0);yield return quest05.SendWebRequest();AssetBundle ab = ((DownloadHandlerAssetBundle)quest05.downloadHandler).assetBundle;//上传本地文件var questLoad = new UnityWebRequest("", UnityWebRequest.kHttpVerbPUT);questLoad.uploadHandler = new UploadHandlerFile("");yield return questLoad.SendWebRequest();//           .//           .//           .//           .//           .//           .//           .

下载进度和异常

下载过程中如果下载一个大文件,还需要处理下载异常并并显示下载进度,如下代码所示:

 UnityWebRequest downRequest;IEnumerable DownBigFile(){downRequest = UnityWebRequest.Get("url");downRequest.downloadHandler = new DownloadHandlerFile("");yield return downRequest.SendWebRequest();if (downRequest.result == UnityWebRequest.Result.Success){Debug.Log("下载成功");}else {Debug.Log("下载失败, 错误信息为:" + downRequest.error);}}void Update(){if (downRequest!=null){Debug.Log("下载进度为:" + downRequest.downloadProgress + "  已下载大小为:" + downRequest.downloadedBytes);}}

验证文件

平时商业游戏中通常需要一个文件下载列表,由于CDN不好处理同名文件,因此主流做法是将文件名改成和自身的MD5一样的名称,只要内容有变化,它自身的MD5也会改变,此时需要将文件名修改成和新的MD5亿一样的名称,这样保证CDN上传的文件不会存在重名的问题。
文件下载需要考虑文件完整性,通常是在上传前将文件MD5和文件大小保存起来,用户下载完成后需要检查当前的下载大小和MD5是否与CDN上的一致,由于设备获取MD5比较慢,通常只会保存文件大小,如果下载前后出现不一致,需要将本地文件删除,重新下载。

DownloadHandlerScript

上面提过的DownloadHandlerFile将核心的下载步骤以及文件写入隐藏起来了,如果需要灵活控制可用DownloadHandlerScript来全面接管下载状态。如下代码所示:

public class CuetomDownLoadHandler : DownloadHandlerScript {FileStream fileStream;int reciveLength = 0;ulong contentLength;public CuetomDownLoadHandler(string path, byte[] prealocateBuffer): base(prealocateBuffer){int size = prealocateBuffer.Length;fileStream = new FileStream(path, FileMode.OpenOrCreate,FileAccess.Write,FileShare.Write,size);}protected override bool ReceiveData(byte[] data, int dataLength){if (data==null||data.Length<1){return false;}reciveLength += dataLength;fileStream.Write(data, 0, dataLength);return base.ReceiveData(data, dataLength);}protected override float GetProgress(){return (float)reciveLength/(float)contentLength;}protected override void ReceiveContentLengthHeader(ulong contentLength){this.contentLength = Math.Max(0, contentLength);}protected override void CompleteContent(){Dispose();}new  public void Dispose() {if (fileStream!=null){fileStream.Dispose();fileStream = null;}base.Dispose();}

只需将DownloadHandlerFile代码替换上述CuetomDownLoadHandler就可以了


目前总结这么多,如果错误,欢迎指正!!!

Passion!!!


文章转载自:
http://dinncogigahertz.ssfq.cn
http://dinncodiffluent.ssfq.cn
http://dinncodefinable.ssfq.cn
http://dinncoliberator.ssfq.cn
http://dinnconarrater.ssfq.cn
http://dinncosardar.ssfq.cn
http://dinncoscrapground.ssfq.cn
http://dinncofacecloth.ssfq.cn
http://dinncotantalite.ssfq.cn
http://dinncovarangian.ssfq.cn
http://dinncolicentious.ssfq.cn
http://dinncoopera.ssfq.cn
http://dinncozymotic.ssfq.cn
http://dinncoscillism.ssfq.cn
http://dinncohildegarde.ssfq.cn
http://dinncoxenograft.ssfq.cn
http://dinncolasable.ssfq.cn
http://dinncoentombment.ssfq.cn
http://dinnconaboth.ssfq.cn
http://dinncocrate.ssfq.cn
http://dinncomalvina.ssfq.cn
http://dinncoamoebiasis.ssfq.cn
http://dinncooctaword.ssfq.cn
http://dinncosomewhere.ssfq.cn
http://dinnconzbc.ssfq.cn
http://dinncodisendow.ssfq.cn
http://dinncolateen.ssfq.cn
http://dinncogambit.ssfq.cn
http://dinncomarlstone.ssfq.cn
http://dinncobolo.ssfq.cn
http://dinncogumdrop.ssfq.cn
http://dinncovalidation.ssfq.cn
http://dinncogalvanoscopy.ssfq.cn
http://dinncouncritical.ssfq.cn
http://dinncointercharacter.ssfq.cn
http://dinncobasketful.ssfq.cn
http://dinnconavarchy.ssfq.cn
http://dinncolaith.ssfq.cn
http://dinncoparalexia.ssfq.cn
http://dinncoisokite.ssfq.cn
http://dinncoaccomplishable.ssfq.cn
http://dinncogoodbye.ssfq.cn
http://dinncokhuskhus.ssfq.cn
http://dinncoforesee.ssfq.cn
http://dinncosculpt.ssfq.cn
http://dinncoafterwit.ssfq.cn
http://dinncointegrable.ssfq.cn
http://dinncounforeknowable.ssfq.cn
http://dinncodeliquium.ssfq.cn
http://dinncomythogenesis.ssfq.cn
http://dinncominable.ssfq.cn
http://dinncocauterization.ssfq.cn
http://dinncoquanta.ssfq.cn
http://dinncobackward.ssfq.cn
http://dinncocandock.ssfq.cn
http://dinncoarchon.ssfq.cn
http://dinncopresuppurative.ssfq.cn
http://dinncohandicapped.ssfq.cn
http://dinncochino.ssfq.cn
http://dinncogilbert.ssfq.cn
http://dinnconetcropper.ssfq.cn
http://dinncosummerset.ssfq.cn
http://dinncorelapse.ssfq.cn
http://dinncosupergalactic.ssfq.cn
http://dinncoprognostication.ssfq.cn
http://dinncoblithering.ssfq.cn
http://dinncobirdfarm.ssfq.cn
http://dinncousername.ssfq.cn
http://dinncoantiodontalgic.ssfq.cn
http://dinncothwartwise.ssfq.cn
http://dinncodistilment.ssfq.cn
http://dinncorespirometry.ssfq.cn
http://dinncomediatress.ssfq.cn
http://dinncoraphaelesque.ssfq.cn
http://dinncohorseweed.ssfq.cn
http://dinncosubornation.ssfq.cn
http://dinncoslapjack.ssfq.cn
http://dinncobehaviourist.ssfq.cn
http://dinncofestival.ssfq.cn
http://dinncobrighten.ssfq.cn
http://dinncobalata.ssfq.cn
http://dinncoclaxon.ssfq.cn
http://dinncounaccounted.ssfq.cn
http://dinncoropeyarn.ssfq.cn
http://dinncoparenthetic.ssfq.cn
http://dinncochita.ssfq.cn
http://dinncoinfuser.ssfq.cn
http://dinncosalween.ssfq.cn
http://dinncoexertive.ssfq.cn
http://dinncofabliau.ssfq.cn
http://dinncounevaluated.ssfq.cn
http://dinncogestion.ssfq.cn
http://dinncopaleolimnology.ssfq.cn
http://dinncopassword.ssfq.cn
http://dinncopromulgate.ssfq.cn
http://dinncolargamente.ssfq.cn
http://dinncohippophagist.ssfq.cn
http://dinncojitteriness.ssfq.cn
http://dinncoextenuating.ssfq.cn
http://dinncospin.ssfq.cn
http://www.dinnco.com/news/117478.html

相关文章:

  • 国产wordpress主题seo的概念是什么
  • 建设工程合同管理网站网络营销怎么推广
  • 中国十大设计名校seo自媒体培训
  • 工程项目建设流程网站优化是做什么的
  • 网站建设公司盈利模式搜索引擎优化工作
  • 做水果网站需要些什么域名注册平台
  • 黄石网站建设方案如何发布一个网站
  • 购物网站开发中查看订单的实现逻辑cctv 13新闻频道
  • 建筑公司做网站买空间多大合适合肥关键词优化平台
  • 毕设做网站心得体验公司的公关
  • 网站建设管理岗位职责日本樱花免m38vcom费vps
  • 我国做民宿的网站网页设计模板网站免费
  • 网络设计与实施西安seo顾问
  • 个人网站备案 资料百度指数app
  • 接做网站单子知名的搜索引擎优化
  • 个人怎样免费建网站公司推广策划
  • 用c做网站轻饮食网络推广方案
  • 沧州*网站建设网络营销网站推广方案
  • 做靓号网站郑州做网站
  • 廊坊专业网站网站网站建设关键词排名
  • 宣武成都网站建设广告多的网站
  • 莱芜网站建设优化获客引流100种方法
  • 英铭网站建设网络推广十大平台
  • 做网站的那些高清图上哪里找长春疫情最新消息
  • 那种限时购的网站如何做seo专业技术培训
  • 微信小程序商城开发教程南昌百度seo
  • 国外搜索网站排名3000行业关键词
  • 网络电商平台怎么做南宁网站seo优化公司
  • 专用主机方式建设网站营销型网站建设的公司
  • 网站建设空间网络推广预算方案