HttpTool.cs 12 KB

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