HttpTool.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. using UnityEngine.Networking;
  6. using System.Text;
  7. using System.Security.Cryptography;
  8. using System.Net;
  9. using System.IO;
  10. using Newtonsoft.Json.Linq;
  11. /// <summary>
  12. /// Http Request SDK
  13. /// </summary>
  14. public class HttpTool : MonoSingleton<HttpTool>
  15. {
  16. public static bool is20 = false;
  17. private string baseUrl20 = "https://office.ghz-tech.com:3424/api";
  18. // private string baseUrl = "http://office.ghz-tech.com:3425/guideSystem";
  19. private string baseUrl = "http://office.ghz-tech.com:9904/api";
  20. private string UrlPointCloud = "https://pro.qulivr.com/mr-navigator/v1";
  21. //private string token = "";
  22. Dictionary<string, string> requestHeader = new Dictionary<string, string>(); // header
  23. void Awake()
  24. {
  25. //http header 的内容
  26. requestHeader.Add("Content-Type", "application/json");
  27. }
  28. // public string Token
  29. // {
  30. // get { return token; }
  31. // }
  32. public string BaseUrl
  33. {
  34. get { return baseUrl; }
  35. }
  36. public Dictionary<string, string> RequestHeader
  37. {
  38. get { return requestHeader; }
  39. }
  40. public void Get(string methodName, Action<string> callback)
  41. {
  42. StartCoroutine(SendHttp(methodName,"", callback,false, false));
  43. }
  44. public void GetPoint(string methodName, Action<string> callback,bool isCloud=false)
  45. {
  46. StartCoroutine(SendHttp(methodName,"", callback,false, isCloud));
  47. }
  48. public void GetPointFile(string methodName, string projectId, string fileType, Action<string> callback)
  49. {
  50. string url = UrlPointCloud + methodName;
  51. // 创建URL
  52. UriBuilder uriBuilder = new UriBuilder(url);
  53. // 添加查询参数
  54. uriBuilder.Query = "projectId=" + projectId + "&fileType=" + fileType;
  55. StartCoroutine(SendHttp(uriBuilder.Uri.ToString(),"", callback,false));
  56. }
  57. public void PostTest(string methodName, string jsonString, Action<string> CallBack)
  58. {
  59. StartCoroutine(SendHttp(methodName, jsonString, CallBack));
  60. }
  61. public void Post(string methodName, string jsonString, Action<string> CallBack)
  62. {
  63. StartCoroutine(SendHttp(methodName, jsonString, CallBack));
  64. }
  65. public void GetAllMaterials(string methodName, string jsonString, Action<String> CallBack)
  66. {
  67. StartCoroutine(SendHttp(methodName, "", CallBack,false));
  68. }
  69. /// <summary>
  70. /// 登录
  71. /// </summary>
  72. /// <param name="methodName"></param>
  73. /// <param name="jsonString"></param>
  74. /// <param name="CallBack"></param>
  75. public void PostLogin(string methodName, string jsonString, Action<string> CallBack)
  76. {
  77. StartCoroutine(SendHttp(methodName, jsonString, CallBack));
  78. }
  79. public void initHead()
  80. {
  81. requestHeader.Clear();
  82. if (UserInfo.Instance.Token!="" && UserInfo.Instance.Token!=null)
  83. {
  84. requestHeader.Add("x-token", UserInfo.Instance.Token);
  85. requestHeader.Add("authorization", UserInfo.Instance.Token);
  86. }
  87. requestHeader.Add("Content-Type", "application/json");
  88. }
  89. public IEnumerator SendHttp(string methodName, string jsonString, Action<string> CallBack,bool isPost=true,bool isCloud=false)
  90. {
  91. Debug.Log("Start Queue SendHttp " + methodName);
  92. string url;
  93. if (methodName.Contains("http"))
  94. {
  95. url =methodName;
  96. }
  97. else
  98. {
  99. if(isCloud)
  100. {
  101. url = UrlPointCloud + methodName;
  102. }else
  103. {
  104. if(is20)
  105. {
  106. url = baseUrl20 + methodName;
  107. }
  108. else
  109. {
  110. url = baseUrl + methodName;
  111. }
  112. }
  113. }
  114. Debug.Log("URL:" + url+" isPost "+ isPost);
  115. UnityWebRequest webRequest;
  116. if (!isPost)
  117. {
  118. webRequest = UnityWebRequest.Get(url);
  119. }
  120. else
  121. {
  122. webRequest = new UnityWebRequest(url, "POST");
  123. }
  124. initHead();
  125. using (webRequest)
  126. {
  127. if (!isPost)
  128. {
  129. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  130. foreach (var v in requestHeader)
  131. {
  132. webRequest.SetRequestHeader(v.Key, v.Value);
  133. }
  134. }
  135. else
  136. {
  137. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  138. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  139. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  140. }
  141. foreach (var v in requestHeader)
  142. {
  143. webRequest.SetRequestHeader(v.Key, v.Value);
  144. }
  145. yield return webRequest.SendWebRequest();
  146. Debug.Log("CallBack==>"+ webRequest.downloadHandler.text);
  147. if (webRequest.isHttpError || webRequest.isNetworkError)
  148. {
  149. Debug.LogError(url + "\n" + webRequest.error + "\n" + webRequest.downloadHandler.text);
  150. string error = webRequest.downloadHandler.text;
  151. JObject jObject = JObject.Parse(error);
  152. CallBack(jObject["message"].ToString());
  153. }
  154. else
  155. {
  156. //Debug.Log(webRequest.downloadHandler.text);
  157. var mes = webRequest.downloadHandler.text;
  158. CallBack(mes);
  159. }
  160. }
  161. }
  162. public void HeadAddToken(string token)
  163. {
  164. requestHeader.Add("x-token", token);
  165. }
  166. public string GetMd5Hash(string strToEncrypt)
  167. {
  168. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  169. byte[] bytes = Encoding.ASCII.GetBytes(strToEncrypt);
  170. byte[] encoded = md5.ComputeHash(bytes);
  171. StringBuilder sb = new StringBuilder();
  172. for (int i = 0; i < 10; i++)
  173. {
  174. sb.Append(encoded[i].ToString("x2"));
  175. }
  176. string password = sb.ToString();
  177. password = password.Substring(0, 10);
  178. return password;
  179. }
  180. }