123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Net.Http;
- using System.Net.Http.Headers;
- using System.Net.Http.Json;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Models;
- namespace TEAMModelOS.SDK
- {
- public static class ThirdApisService
- {
-
- // private readonly IHttpClientFactory _httpClient;
- public async static Task<ScsResult> Post(HttpClient _httpClient, string url, string Code, string PassKey,string privateKey, Dictionary<string ,object> data)
- {
- string result = "";
- HttpResponseMessage response=null;
- try {
- string json = data.ToJsonString();
- string Content = AESHelper.AESEncrypt(json, privateKey);
- string paramStr = "Code={0}&PassKey={1}&Content={2}";
- string sendMsg = string.Format(paramStr, Code, PassKey, Content);
- #region 签名 Signature
- SortedDictionary<string, string> signatureDC = new SortedDictionary<string, string>();
- var timeSpan = (DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0));
- signatureDC["t"] = timeSpan.TotalMilliseconds.ToString();
- signatureDC["Code"] = Code;
- signatureDC["PassKey"] = PassKey;
- string signatureStr = signatureDC.ToJsonString();
- string signature = AESHelper.AESEncrypt(signatureStr, privateKey);
- #endregion
- var client = _httpClient;
- client.DefaultRequestHeaders.Add("Signature", signature);
- //client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded");
- var request = new HttpRequestMessage();
- request.Method = new HttpMethod("POST");
- request.RequestUri = new Uri(url);
- request.Content = new StringContent(sendMsg);
- request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
- response = await client.SendAsync(request);
- //response = await client.PostAsync(url, new StringContent(sendMsg));
- result = await response.Content.ReadAsStringAsync();
- if (!result.Contains("操作失败"))
- {
-
- ScsResult scsResult = result.ToObject<ScsResult>();
- if (scsResult.result)
- {
- scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
- }
- else
- {
- scsResult.content = AESHelper.AESDecrypt(scsResult.content, privateKey);
- }
- return scsResult;
- }
- else {
- return new ScsResult();
- }
- } catch (Exception ex ) {
- //重传机制
- // Thread.Sleep(5 * 60 * 1000);
- string papas = $"{ex.Message}\n{ex.StackTrace}\n{data.ToJsonString()} \n{result}";
- //return await Post(url, Code, PassKey, privateKey, data);
- 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()}");
- }
- }
- }
- }
|