Unity 框架

NetHelper.cs 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using System.Collections;
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. using Cysharp.Threading.Tasks;
  5. using UnityEngine.Networking;
  6. using System.Text;
  7. using System;
  8. namespace TFramework
  9. {
  10. public class NetHelper
  11. {
  12. private int m_timeOut = 20;
  13. /// <summary>
  14. /// 请求最大等待时长
  15. /// </summary>
  16. /// <param name="timeOut"></param>
  17. public NetHelper(int timeOut)
  18. {
  19. m_timeOut = timeOut;
  20. }
  21. public NetHelper() { }
  22. public async UniTask<CallBackArgs> Get(string url, params Header[] headers)
  23. {
  24. UnityWebRequest get = UnityWebRequest.Get(url);
  25. foreach (var item in headers)
  26. {
  27. get.SetRequestHeader(item.m_headerKey, item.m_headerValue);
  28. }
  29. get.timeout = m_timeOut;
  30. try
  31. {
  32. await get.SendWebRequest();
  33. }
  34. catch (Exception e)
  35. {
  36. return ErrorCallBack(e.Message);
  37. }
  38. return OverCallBack(get);
  39. }
  40. public async UniTask<CallBackArgs> Post(string url, string json, params Header[] headers)
  41. {
  42. using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
  43. {
  44. request.uploadHandler = new UploadHandlerRaw(Encoding.Default.GetBytes(json));
  45. request.downloadHandler = new DownloadHandlerBuffer();
  46. foreach (var item in headers)
  47. {
  48. request.SetRequestHeader(item.m_headerKey, item.m_headerValue);
  49. }
  50. request.timeout = m_timeOut;
  51. try
  52. {
  53. await request.SendWebRequest();
  54. }catch(Exception e)
  55. {
  56. return ErrorCallBack(e.Message);
  57. }
  58. return OverCallBack(request);
  59. }
  60. }
  61. public async UniTask<CallBackArgs> Post(string url, WWWForm form, params Header[] headers)
  62. {
  63. using (UnityWebRequest request = UnityWebRequest.Post(url, form))
  64. {
  65. foreach (var item in headers)
  66. {
  67. request.SetRequestHeader(item.m_headerKey, item.m_headerValue);
  68. }
  69. request.timeout = m_timeOut;
  70. try
  71. {
  72. await request.SendWebRequest();
  73. }
  74. catch (Exception e)
  75. {
  76. return ErrorCallBack(e.Message);
  77. }
  78. return OverCallBack(request);
  79. }
  80. }
  81. private CallBackArgs OverCallBack(UnityWebRequest request)
  82. {
  83. CallBackArgs m_callBackArgs = new CallBackArgs();
  84. m_callBackArgs.IsError = request.result == UnityWebRequest.Result.ProtocolError
  85. || request.result == UnityWebRequest.Result.ConnectionError
  86. || request.result == UnityWebRequest.Result.DataProcessingError || !string.IsNullOrEmpty(request.error);
  87. m_callBackArgs.Error = request.error;
  88. m_callBackArgs.Text = request.downloadHandler.text;
  89. m_callBackArgs.Data = request.downloadHandler.data;
  90. return m_callBackArgs;
  91. }
  92. private CallBackArgs ErrorCallBack(string error)
  93. {
  94. CallBackArgs m_callBackArgs = new CallBackArgs();
  95. m_callBackArgs.IsError = true;
  96. m_callBackArgs.Error = error;
  97. return m_callBackArgs;
  98. }
  99. }
  100. /// <summary>
  101. /// Web请求回调
  102. /// </summary>
  103. public class CallBackArgs : EventArgs
  104. {
  105. public bool IsError;
  106. public string Text;
  107. public string Error;
  108. public byte[] Data;
  109. public void Reset()
  110. {
  111. IsError = false;
  112. Text = string.Empty;
  113. Error = string.Empty;
  114. Data = null;
  115. }
  116. }
  117. public struct Header
  118. {
  119. public string m_headerKey;
  120. public string m_headerValue;
  121. public Header(string headerKey, string headerValue)
  122. {
  123. m_headerKey = headerKey;
  124. m_headerValue = headerValue;
  125. }
  126. }
  127. }