unity下载文件三(http异步下载)
生活随笔
收集整理的這篇文章主要介紹了
unity下载文件三(http异步下载)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
異步下載,顧名思義就是不影響你主線程使用客戶端的時候,人家在后臺搞你的明堂。
直接入主題,既然要下載,首先得請求,請求成功之后進(jìn)行回調(diào),這就是一個異步過程,異步回調(diào)的時間不可控。
1、首先請求下載。
public bool DownLoadFile(DownLoadFileModel file){try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.1:8080/" + file.FileName);//DownLoadFileModel 為我自己定義的一個實(shí)體類,文件名需要帶后綴名
file.request = request;//實(shí)體類中將http的請求信息也帶進(jìn)去了,方便回調(diào)中的判斷
request.BeginGetResponse(new AsyncCallback(ResponseCallbackDownLoad), file);//ResponseCallbackDownLoad請求成功后的回調(diào)方法return true;}catch {return false;}}
2、請求成功之后就會去調(diào)用ResponseCallbackDownLoad方法,這個方法是異步的,是在子線程里執(zhí)行,如果在消息者模式下在這個回調(diào)里面發(fā)送監(jiān)聽到主線程,再操作GameObject對象就會報錯,或者直接調(diào)用主線程的GameObject也會報錯,至于怎么去獲取這個下載的信息并操作界面,我想這個我想我就不用多說了。不多說了,上回調(diào)代碼,回調(diào)代碼是在子線程里執(zhí)行。
private void ResponseCallbackDownLoad(IAsyncResult ar){//throw new NotImplementedException();try{object req = ar.AsyncState as object;;if (req == null) return;DownLoadFileModel file = ar.AsyncState as DownLoadFileModel;//獲取異步下載的請求的相關(guān)信息,以便判斷HttpWebResponse response = file.request.EndGetResponse(ar) as HttpWebResponse;if (response.StatusCode != HttpStatusCode.OK){response.Close();return;}Stream outStream;Stream inStream = response.GetResponseStream();byte[] b = new byte[1024];FileInfo fi = new FileInfo(Application.persistentDataPath+ "//" + file.SaveName);if (fi.Exists){//TODO如果文件件存在,TODO }else //else如果該文件不存在{try{int readCount = inStream.Read(b, 0, b.Length);outStream = fi.Create();long fileLength = response.ContentLength;//獲取文件總長度long fileSize = 0;//已下載的文件長度while (readCount > 0){outStream.Write(b, 0, readCount);fileSize += readCount;int progress = (int)(((float)fileSize / (float)fileLength) * 100);//progress 為計算下載的百分比readCount = inStream.Read(b, 0, b.Length);}outStream.Close();inStream.Close();response.Close();}}catch (Exception ex){}}}catch (Exception ex){Debug.Log("文件下載失敗" + ex.Message);}} }
?
轉(zhuǎn)載于:https://www.cnblogs.com/vsirWaiter/p/5377788.html
總結(jié)
以上是生活随笔為你收集整理的unity下载文件三(http异步下载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb总结(四)—JSP深入解析
- 下一篇: 数据切分——Mysql分区表的管理与维护