ThirdApisService.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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.Tasks;
  10. using TEAMModelOS.SDK;
  11. using TEAMModelOS.SDK.Extension;
  12. using TEAMModelOS.SDK.Models;
  13. namespace TEAMModelOS.SDK
  14. {
  15. public class ThirdApisService
  16. {
  17. private readonly HttpClient _httpClient;
  18. public ThirdApisService(HttpClient httpClient)
  19. {
  20. _httpClient = httpClient;
  21. }
  22. public async Task<ScsResult> Post(string url, string Code, string PassKey,string privateKey, Dictionary<string ,object> data)
  23. {
  24. HttpResponseMessage response=null;
  25. try {
  26. string json = data.ToJsonString();
  27. string Content = AESHelper.AESEncrypt(json, privateKey);
  28. string paramStr = "Code={0}&PassKey={1}&Content={2}";
  29. string sendMsg = string.Format(paramStr, Code, PassKey, Content);
  30. #region 签名 Signature
  31. SortedDictionary<string, string> signatureDC = new SortedDictionary<string, string>();
  32. var timeSpan = (DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0));
  33. signatureDC["t"] = timeSpan.TotalMilliseconds.ToString();
  34. signatureDC["Code"] = Code;
  35. signatureDC["PassKey"] = PassKey;
  36. string signatureStr = signatureDC.ToJsonString();
  37. string signature = AESHelper.AESEncrypt(signatureStr, privateKey);
  38. #endregion
  39. string result = "";
  40. _httpClient.DefaultRequestHeaders.Add("Signature", signature);
  41. using (var request = new HttpRequestMessage())
  42. {
  43. request.Method = new HttpMethod("POST");
  44. request.RequestUri = new Uri(url);
  45. request.Content = new StringContent(sendMsg);
  46. request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
  47. response = await _httpClient.SendAsync(request);
  48. result = await response.Content.ReadAsStringAsync();
  49. }
  50. ScsResult scsResult = result.ToObject<ScsResult>();
  51. if (scsResult.result)
  52. {
  53. scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
  54. }
  55. else {
  56. scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
  57. }
  58. return scsResult;
  59. } catch (Exception ex ) {
  60. 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}");
  61. }
  62. }
  63. }
  64. }