1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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.Tasks;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Models;
- namespace TEAMModelOS.SDK
- {
- public class ThirdApisService
- {
-
- private readonly HttpClient _httpClient;
- public ThirdApisService(HttpClient httpClient)
- {
- _httpClient = httpClient;
- }
- public async Task<ScsResult> Post(string url, string Code, string PassKey,string privateKey, Dictionary<string ,object> data)
- {
- HttpResponseMessage response=null;
- try {
- string Content = AESHelper.AESEncrypt(data.ToJsonString(), 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
- string result = "";
- _httpClient.DefaultRequestHeaders.Add("Signature", signature);
- using (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 _httpClient.SendAsync(request);
- result = await response.Content.ReadAsStringAsync();
- }
- 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;
- } catch (Exception ex ) {
- throw new Exception($"{ex.Message}\n{ex.StackTrace}\n{data.ToJsonString()}\n{url}\n {Code}\n{PassKey}\n{privateKey}\n{response?.StatusCode}\n{response?.Content}");
- }
-
- }
- }
-
- }
|