ThirdApisService.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Net.Http.Headers;
  7. using System.Net.Http.Json;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using TEAMModelOS.SDK;
  12. using TEAMModelOS.SDK.Extension;
  13. using TEAMModelOS.SDK.Models;
  14. namespace TEAMModelOS.SDK
  15. {
  16. public static class ThirdApisService
  17. {
  18. // private readonly HttpClient _httpClient;
  19. public async static Task<ScsResult> Post(HttpClient _httpClient, string url, string Code, string PassKey,string privateKey, Dictionary<string ,object> data)
  20. {
  21. string result = "";
  22. HttpResponseMessage response=null;
  23. try {
  24. string json = data.ToJsonString();
  25. string Content = AESHelper.AESEncrypt(json, privateKey);
  26. string paramStr = "Code={0}&PassKey={1}&Content={2}";
  27. string sendMsg = string.Format(paramStr, Code, PassKey, Content);
  28. #region 签名 Signature
  29. SortedDictionary<string, string> signatureDC = new SortedDictionary<string, string>();
  30. var timeSpan = (DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0));
  31. signatureDC["t"] = timeSpan.TotalMilliseconds.ToString();
  32. signatureDC["Code"] = Code;
  33. signatureDC["PassKey"] = PassKey;
  34. string signatureStr = signatureDC.ToJsonString();
  35. string signature = AESHelper.AESEncrypt(signatureStr, privateKey);
  36. #endregion
  37. _httpClient.DefaultRequestHeaders.Add("Signature", signature);
  38. var request = new HttpRequestMessage();
  39. request.Method = new HttpMethod("POST");
  40. request.RequestUri = new Uri(url);
  41. request.Content = new StringContent(sendMsg);
  42. request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
  43. response = await _httpClient.SendAsync(request);
  44. result = await response.Content.ReadAsStringAsync();
  45. if (!result.Contains("操作失败"))
  46. {
  47. ScsResult scsResult = result.ToObject<ScsResult>();
  48. if (scsResult.result)
  49. {
  50. scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
  51. }
  52. else
  53. {
  54. scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
  55. }
  56. return scsResult;
  57. }
  58. else {
  59. return new ScsResult();
  60. }
  61. } catch (Exception ex ) {
  62. //重传机制
  63. // Thread.Sleep(5 * 60 * 1000);
  64. string papas = $"{ex.Message}\n{ex.StackTrace}\n{data.ToJsonString()} \n{result}";
  65. //return await Post(url, Code, PassKey, privateKey, data);
  66. throw new Exception($"{ex.Message}\n{ex.StackTrace}\n\n{data.ToJsonString()}\n{url}\n {Code}\n{PassKey}\n{privateKey}\n{response?.StatusCode}\n{response?.Content}\n{result}\n{data.ToJsonString()}");
  67. }
  68. }
  69. }
  70. }