HttpTool.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  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. // private string baseUrl = "http://office.ghz-tech.com:3425/guideSystem";
  17. private string baseUrl = "http://office.ghz-tech.com:9904/api";
  18. private string UrlPointCloud = "https://pro.qulivr.com/mr-navigator/v1";
  19. private string token = "";
  20. Dictionary<string, string> requestHeader = new Dictionary<string, string>(); // header
  21. void Awake()
  22. {
  23. //http header 的内容
  24. requestHeader.Add("Content-Type", "application/json");
  25. }
  26. public string Token
  27. {
  28. get { return token; }
  29. }
  30. public string BaseUrl
  31. {
  32. get { return baseUrl; }
  33. }
  34. public Dictionary<string, string> RequestHeader
  35. {
  36. get { return requestHeader; }
  37. }
  38. public void Get(string methodName, Action<string> callback)
  39. {
  40. StartCoroutine(GetRequest(methodName, callback));
  41. }
  42. private IEnumerator GetRequest(string methodName, Action<string> callback)
  43. {
  44. // string url = Application.streamingAssetsPath + methodName;
  45. string url = baseUrl + methodName;
  46. //Debug.Log("URL:"+url);
  47. using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
  48. {
  49. webRequest.SetRequestHeader("authorization", token);
  50. //设置header
  51. foreach (var v in requestHeader)
  52. {
  53. webRequest.SetRequestHeader(v.Key, v.Value);
  54. }
  55. yield return webRequest.SendWebRequest();
  56. if (webRequest.isHttpError || webRequest.isNetworkError)
  57. {
  58. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text);
  59. if (callback != null)
  60. {
  61. callback(null);
  62. }
  63. }
  64. else
  65. {
  66. if (callback != null)
  67. {
  68. callback(webRequest.downloadHandler.text);
  69. }
  70. }
  71. }
  72. }
  73. public void PostTest(string methodName, string jsonString, Action<string> CallBack)
  74. {
  75. StartCoroutine(PostRequestTest(methodName, jsonString, CallBack));
  76. }
  77. private IEnumerator PostRequestTest(string methodName, string jsonString, Action<string> CallBack)
  78. {
  79. string url = baseUrl + methodName;
  80. Debug.Log(url + jsonString);
  81. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  82. {
  83. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  84. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  85. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  86. webRequest.SetRequestHeader("authorization", token);
  87. foreach (var v in requestHeader)
  88. {
  89. webRequest.SetRequestHeader(v.Key, v.Value);
  90. Debug.Log(v.Value + " " + methodName);
  91. }
  92. yield return webRequest.SendWebRequest();
  93. if (webRequest.isHttpError || webRequest.isNetworkError)
  94. {
  95. CallBack?.Invoke("UnityWebRequest Error");
  96. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text + "\n" + methodName);
  97. //GameManager.Instance.text2.text = webRequest.error;
  98. }
  99. else
  100. {
  101. Debug.Log(webRequest.downloadHandler.text);
  102. CallBack(webRequest.downloadHandler.text);
  103. }
  104. }
  105. }
  106. public void PostSnInfo(string methodName, string jsonString, int index, Action<int, string> CallBack)
  107. {
  108. StartCoroutine(PostnInfoRequest(methodName, jsonString, index, CallBack));
  109. }
  110. public IEnumerator PostnInfoRequest(string methodName, string jsonString, int index, Action<int, string> CallBack)
  111. {
  112. string url = baseUrl + methodName;
  113. Debug.Log("URL:" + url);
  114. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  115. {
  116. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  117. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  118. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  119. webRequest.SetRequestHeader("authorization", token);
  120. foreach (var v in requestHeader)
  121. {
  122. webRequest.SetRequestHeader(v.Key, v.Value);
  123. //Debug.Log(v.Value + " " + methodName);
  124. }
  125. yield return webRequest.SendWebRequest();
  126. if (webRequest.isHttpError || webRequest.isNetworkError)
  127. {
  128. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text + "\n" + methodName);
  129. //GameManager.Instance.text2.text = webRequest.error;
  130. }
  131. else
  132. {
  133. Debug.Log(webRequest.downloadHandler.text);
  134. CallBack(index, webRequest.downloadHandler.text);
  135. }
  136. }
  137. }
  138. public IEnumerator PostRequestSpoitDetail(string methodName, string jsonString, Action<string> CallBack)
  139. {
  140. string url = baseUrl + methodName;
  141. Debug.Log(url);
  142. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  143. {
  144. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  145. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  146. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  147. webRequest.SetRequestHeader("authorization", token);
  148. foreach (var v in requestHeader)
  149. {
  150. webRequest.SetRequestHeader(v.Key, v.Value);
  151. //Debug.Log(v.Value + " " + methodName);
  152. }
  153. yield return webRequest.SendWebRequest();
  154. if (webRequest.isHttpError || webRequest.isNetworkError)
  155. {
  156. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text + "\n" + methodName);
  157. //GameManager.Instance.text2.text = webRequest.error;
  158. }
  159. else
  160. {
  161. //Debug.Log(webRequest.downloadHandler.text);
  162. CallBack(webRequest.downloadHandler.text);
  163. }
  164. }
  165. }
  166. public void Post(string methodName, string jsonString, Action<string> CallBack)
  167. {
  168. StartCoroutine(PostRequest(methodName, jsonString, CallBack));
  169. }
  170. //
  171. private IEnumerator PostRequest(string methodName, string jsonString, Action<string> CallBack)
  172. {
  173. string url = baseUrl + methodName;
  174. //Debug.Log(url);
  175. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  176. {
  177. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  178. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  179. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  180. webRequest.SetRequestHeader("authorization", token);
  181. foreach (var v in requestHeader)
  182. {
  183. webRequest.SetRequestHeader(v.Key, v.Value);
  184. //Debug.Log(v.Value + " " + methodName);
  185. }
  186. yield return webRequest.SendWebRequest();
  187. if (webRequest.isHttpError || webRequest.isNetworkError)
  188. {
  189. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text + "\n" + methodName);
  190. //GameManager.Instance.text2.text = webRequest.error;
  191. }
  192. else
  193. {
  194. //Debug.Log(webRequest.downloadHandler.text);
  195. CallBack(webRequest.downloadHandler.text);
  196. }
  197. }
  198. }
  199. public void GetAllMaterials(string methodName, string jsonString, Action<String> CallBack)
  200. {
  201. StartCoroutine(GetRequest(methodName, jsonString, CallBack));
  202. }
  203. private IEnumerator GetRequest(string methodName, string jsonString, Action<String> CallBack)
  204. {
  205. string url = baseUrl + methodName;
  206. //Debug.Log("URL:"+url);
  207. token = jsonString;
  208. HeadAddToken(token);
  209. using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
  210. {
  211. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  212. webRequest.SetRequestHeader("authorization", jsonString);
  213. foreach (var v in requestHeader)
  214. {
  215. //Debug.Log(v.Key + " " + v.Value);
  216. webRequest.SetRequestHeader(v.Key, v.Value);
  217. }
  218. yield return webRequest.SendWebRequest();
  219. if (webRequest.isHttpError || webRequest.isNetworkError)
  220. {
  221. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text);
  222. }
  223. else
  224. {
  225. //Debug.Log(webRequest.downloadHandler.text);
  226. CallBack(webRequest.downloadHandler.text);
  227. }
  228. }
  229. }
  230. /// <summary>
  231. /// 登录
  232. /// </summary>
  233. /// <param name="methodName"></param>
  234. /// <param name="jsonString"></param>
  235. /// <param name="CallBack"></param>
  236. public void PostLogin(string methodName, string jsonString, Action<string> CallBack)
  237. {
  238. StartCoroutine(PostRequestLogin(methodName, jsonString, CallBack));
  239. }
  240. private IEnumerator PostRequestLogin(string methodName, string jsonString, Action<string> CallBack)
  241. {
  242. string url = baseUrl + methodName;
  243. Debug.Log("URL:" + url);
  244. using (UnityWebRequest webRequest = new UnityWebRequest(url, "POST"))
  245. {
  246. byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonString);
  247. webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
  248. webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
  249. foreach (var v in requestHeader)
  250. {
  251. webRequest.SetRequestHeader(v.Key, v.Value);
  252. }
  253. yield return webRequest.SendWebRequest();
  254. if (webRequest.isHttpError || webRequest.isNetworkError)
  255. {
  256. Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text);
  257. string error = webRequest.downloadHandler.text;
  258. JObject jObject = JObject.Parse(error);
  259. CallBack(jObject["message"].ToString());
  260. }
  261. else
  262. {
  263. //Debug.Log(webRequest.downloadHandler.text);
  264. var mes = webRequest.downloadHandler.text;
  265. JObject obj = JObject.Parse(mes);
  266. if (obj["code"].ToString() == "200")
  267. {
  268. //Debug.Log(obj["data"]["token"].ToString());
  269. token = obj["data"]["token"].ToString();
  270. //Debug.Log(mes);
  271. }
  272. CallBack(mes);
  273. }
  274. }
  275. }
  276. ///// <summary>
  277. ///// 获取本地Sprite
  278. ///// </summary>
  279. ///// <param name="mObj"></param>
  280. ///// <param name="CallBack"></param>
  281. //public void GetLocalSprite(DownLoadMaterial mObj, Action<DownLoadMaterial, object> CallBack)
  282. //{
  283. // StartCoroutine(GetSpriteRequest(mObj, CallBack));
  284. //}
  285. //private IEnumerator GetSpriteRequest(DownLoadMaterial mObj, Action<DownLoadMaterial, object> CallBack)
  286. //{
  287. // UnityWebRequest request = UnityWebRequestTexture.GetTexture(mObj.mObj.localSavePath);
  288. // yield return request.SendWebRequest();
  289. // if (request.isNetworkError || request.isHttpError)
  290. // {
  291. // Debug.LogError(request.error);
  292. // }
  293. // else
  294. // {
  295. // Texture2D texture = DownloadHandlerTexture.GetContent(request);
  296. // Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
  297. // CallBack(mObj, sprite);
  298. // // LoadManager.Instance.DownLoadEnd(mObj, sprite);
  299. // }
  300. //}
  301. public void HeadAddToken(string token)
  302. {
  303. requestHeader.Add("x-token", token);
  304. }
  305. public string GetMd5Hash(string strToEncrypt)
  306. {
  307. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  308. byte[] bytes = Encoding.ASCII.GetBytes(strToEncrypt);
  309. byte[] encoded = md5.ComputeHash(bytes);
  310. StringBuilder sb = new StringBuilder();
  311. for (int i = 0; i < 10; i++)
  312. {
  313. sb.Append(encoded[i].ToString("x2"));
  314. }
  315. string password = sb.ToString();
  316. password = password.Substring(0, 10);
  317. return password;
  318. }
  319. }