Send() public method

public Send ( ) : AsyncOperation
return AsyncOperation
 /// <summary>
 /// 下载文件
 /// </summary>
 /// <param name="fileName"></param>
 /// <param name="fileMode">Append为断点续传,Create为新建文件</param>
 /// <param name="remoteFileSize">Append模式下必传,远端文件大小</param>
 /// <param name="remoteLastModified">Append模式下必传,远端文件最后修改日期</param>
 /// <returns></returns>
 public static IEnumerator DownloadFile(string fileName, OnDownloadFileFinished onDownloadFileFinidhed,
     FileMode fileMode = FileMode.Create, long remoteFileSize = 0, DateTime remoteLastModified = new DateTime())
 {
     string url = BaseDownloadingURL + fileName;
     string filePath = Path.Combine(AssetBundleUtility.LocalAssetBundlePath, fileName);
     using (UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET))
     {
         if (File.Exists(filePath) && fileMode == FileMode.Append)
         {
             FileInfo localFileInfo = new FileInfo(filePath);
             bool isOutdate = remoteLastModified > localFileInfo.LastWriteTime;
             if(localFileInfo.Length == remoteFileSize && !isOutdate)//已下载完成
             {
                 onDownloadFileFinidhed(fileName, null);
                 yield break;
             }
             if (localFileInfo.Length < remoteFileSize && !isOutdate)//继续下载
             {
                 request.downloadHandler = new DownloadHandlerFile(filePath, FileMode.Append);
                 request.SetRequestHeader("Range", string.Format("bytes={0}-", localFileInfo.Length));
             }
             else//重新下载
             {
                 request.downloadHandler = new DownloadHandlerFile(filePath);
             }
         }
         else
         {
             request.downloadHandler = new DownloadHandlerFile(filePath);
         }
         CurrentRequest = request;
         yield return request.Send();
         string error = request.isError ?
             string.Format("DownloadFile Failed - url: {0}, responseCode: {1}, error: {2}", url, request.responseCode, request.error)
             : null;
         onDownloadFileFinidhed(fileName, error);
     }
     CurrentRequest = null;
 }
Beispiel #2
0
        static IEnumerator UploadDonation(UnityWebRequest webRequest, Action onDataReceived)
        {
            if(webRequest == null) yield break;
            yield return webRequest.Send();

            if(webRequest.isError)
            {
                Debug.Log(webRequest.error);
            }
            else
            {
                Debug.Log("Upload donation, WebRequest " + webRequest.url + " done!");
                if(onDataReceived != null) onDataReceived();
            }
        }
Beispiel #3
0
    IEnumerator LoadManifestFromWebRequest()
    {
        var url = GetManifestURL();
        var www = new UnityWebRequest(url) { downloadHandler = new DownloadHandlerAssetBundle(url, 0) };
        yield return www.Send();

        var assetBundle = ((DownloadHandlerAssetBundle)(www.downloadHandler)).assetBundle;
        var assets = assetBundle.LoadAllAssets();

        AddLoadedBundleToManager(assetBundle, assets[0].name);

        manifest = (AssetBundleManifest)assets[0];
    }
Beispiel #4
0
        static IEnumerator PerformWebRequest(UnityWebRequest webRequest, Action<UnityWebRequest> onDataReceived = null)
        {
            if(webRequest == null) yield break;
            yield return webRequest.Send();

            if(webRequest.isError)
            {
                Debug.Log(webRequest.error);
            }
            else
            {
                Debug.Log("WebRequest " + webRequest.url + " done!");
                if(onDataReceived != null) onDataReceived(webRequest);
            }
        }
            private IEnumerator ProcessRequest(UnityWebRequest req)
            {
                yield return req.Send();

                if (req.isError) {
                    if (!WasAborted) {
                        string errorMessage = "Failed web request: " + req.error;
                        Common.Log(errorMessage);
                        self.FinishWithRequest(this, new HttpResponse(new Exception(errorMessage)));
                    }
                }
                else {
                    // Extracts asset bundle
                    HttpResponse response = new HttpResponse();
                    response.Body = Request.downloadHandler.data;
                    response.StatusCode = (int)Request.responseCode;
                    foreach (var pair in Request.GetResponseHeaders()) {
                        response.Headers[pair.Key] = pair.Value;
                    }
                    LogResponse(response);
                    self.FinishWithRequest(this, response);
                }
            }