UnityWebTextRequestOperation.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using UnityEngine.Networking;
  2. using UnityEngine;
  3. namespace YooAsset
  4. {
  5. internal class UnityWebTextRequestOperation : UnityWebRequestOperation
  6. {
  7. private UnityWebRequestAsyncOperation _requestOperation;
  8. /// <summary>
  9. /// 请求结果
  10. /// </summary>
  11. public string Result { private set; get; }
  12. internal UnityWebTextRequestOperation(string url, int timeout = 60) : base(url, timeout)
  13. {
  14. }
  15. internal override void InternalStart()
  16. {
  17. _steps = ESteps.CreateRequest;
  18. }
  19. internal override void InternalUpdate()
  20. {
  21. if (_steps == ESteps.None || _steps == ESteps.Done)
  22. return;
  23. if (_steps == ESteps.CreateRequest)
  24. {
  25. _latestDownloadBytes = 0;
  26. _latestDownloadRealtime = Time.realtimeSinceStartup;
  27. CreateWebRequest();
  28. _steps = ESteps.Download;
  29. }
  30. if (_steps == ESteps.Download)
  31. {
  32. Progress = _requestOperation.progress;
  33. if (_requestOperation.isDone == false)
  34. {
  35. CheckRequestTimeout();
  36. return;
  37. }
  38. if (CheckRequestResult())
  39. {
  40. _steps = ESteps.Done;
  41. Result = _webRequest.downloadHandler.text;
  42. Status = EOperationStatus.Succeed;
  43. }
  44. else
  45. {
  46. _steps = ESteps.Done;
  47. Status = EOperationStatus.Failed;
  48. }
  49. // 注意:最终释放请求器
  50. DisposeRequest();
  51. }
  52. }
  53. internal override void InternalAbort()
  54. {
  55. _steps = ESteps.Done;
  56. DisposeRequest();
  57. }
  58. private void CreateWebRequest()
  59. {
  60. _webRequest = DownloadSystemHelper.NewUnityWebRequestGet(_requestURL);
  61. DownloadHandlerBuffer handler = new DownloadHandlerBuffer();
  62. _webRequest.downloadHandler = handler;
  63. _webRequest.disposeDownloadHandlerOnDispose = true;
  64. _requestOperation = _webRequest.SendWebRequest();
  65. }
  66. }
  67. }