龙空技术网

Unity中HTTP访问和下载

阿博的游戏栈 129

前言:

眼前姐妹们对“unity如何下载资源包”大约比较关切,姐妹们都想要分析一些“unity如何下载资源包”的相关知识。那么小编也在网络上搜集了一些关于“unity如何下载资源包””的相关资讯,希望咱们能喜欢,咱们一起来了解一下吧!

前言

访问中需要用到HTTPRequest组件,HTTPRequest发起HTTP请求,异步回调返回HTTPResponse。本篇就来给大家分享下在项目开发中HTTP访问和下载的实现。

发送Post表单

在unity中,www类虽然满足了很多需求但也失去了一部分自由,下面我们用C#实现发送post请求,传递表单,并获取或设置cookie。

private IEnumerator Login(string _url)            {                //设置链接                Uri url = new Uri(_url);                //设置http请求                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);                request.Method = "POST";                //表单数据                byte[] _data = Encoding.UTF8.GetBytes("account=" + "CarefreeQ" + "&password=" + "CarefreeQ");                //内容类型                request.ContentType = "application/x-www-form-urlencoded";                //内容长度                request.ContentLength = _data.Length;                //设置cookie,如要获取则不能为空                request.CookieContainer = new CookieContainer();                //创建流                Stream stream = request.GetRequestStream();                //写入数据                stream.Write(_data, 0, _data.Length);                stream.Close();                //开始接收响应                HttpWebResponse response = (HttpWebResponse)request.GetResponse();                //获取cookie                string cookie = request.CookieContainer.GetCookieHeader(url);                //接收流                stream = response.GetResponseStream();                //内容长度                int max = (int)response.ContentLength;                int len = 0;                //数据长度                _data = new byte[max];                while (len < max)                {                    //写入响应数据                    int _len = stream.Read(_data, len, _data.Length);                    len += _len;                    yield return new WaitForEndOfFrame();                }                //读取数据                string text = Encoding.UTF8.GetString(_data);            }
下载文件到本地

在Unity的开发中,我们经常会把资源保存到网上,比如一些网格,assetbundle,配置文件,贴图等等。我们希望在用户使用时下载到本地。

   privateIEnumeratorDownload(string_url)        {          //设置保存路径          stringpath="自定义目录";          //这个方法可以新建一个线程运行,来提高效率和降低卡顿,这里就不写了          Uriurl=newUri(_url);          //创建接受          WebRequestrequest=WebRequest.Create(url);          //以下为接收响应的方法          WebResponseresponse=request.GetResponse();          //创建接收流          Streamstream=response.GetResponseStream();          //检查目录是否存在,不存在则创建          stringdir=path.Substring(0,path.LastIndexOf("/"));          if(!Directory.Exists(dir))            Directory.CreateDirectory(dir);          //文件写入路径          FileStreamfile=newFileStream(path,FileMode.OpenOrCreate,FileAccess.Write);          //返回内容总长度          intmax=(int)response.ContentLength;          intlen=0;          while(len<max)          {            //byte容器            byte[]data=newbyte[10240000];            //循环读取            int_len=stream.Read(data,0,data.Length);            //写入文件            file.Write(data,0,_len);            len+=_len;            //如果需要传递进度,可以这样算            //floatprogress=len/(float)max;            yieldreturnnewWaitForEndOfFrame();          }          //写入完后关闭文件流和接收流          file.Close();          stream.Close();        }

最后,以上就是给大家分享的关于HTTP访问和下载实现,希望能对大家有所帮助。

标签: #unity如何下载资源包 #unity怎样下载