using BBWY.Common.Http; using Newtonsoft.Json; using QuanTan.SDK.Extensions; using QuanTan.SDK.Model; using System; using System.Net.Http; namespace QuanTan.SDK.Client { public class BaseClient { protected RestApiService restApiService; protected readonly string host = "https://qt.qiyue666.com/"; private NLog.ILogger logger; public BaseClient(RestApiService restApiService, NLog.ILogger logger) { this.restApiService = restApiService; this.logger = logger; } public QuanTanResponse SendRequest(string apiPath, object param, string appId, string appSecret) { var callTime = DateTime.Now.ToString("yyyyMMddHHmmss"); var randomNum = new Random(Guid.NewGuid().GetHashCode()).Next(100000, 999999).ToString(); if (param == null) param = new object[] { }; var paramStr = JsonConvert.SerializeObject(param); var jmStr = JsonConvert.SerializeObject(new QuanTanSignParam() { //appId = appId, appId = appId, appSecret = appSecret,// callTime = callTime, _params = paramStr, randomNum = randomNum }); var md5Str = jmStr.Md5Encrypt(); var qtToken = $"{appId}-{callTime}-{md5Str}-{randomNum}"; var requestParam = new QuanTanRequestParam() { Params = paramStr, token = qtToken }; RestApiResult restApiResult = null; try { restApiResult = restApiService.SendRequest(host, apiPath, requestParam, null, HttpMethod.Post); if (restApiResult.StatusCode != System.Net.HttpStatusCode.OK) throw new Exception(restApiResult.Content); return JsonConvert.DeserializeObject>(restApiResult.Content); } catch (Exception ex) { if (logger != null) { try { logger.Error(ex, $"Request {JsonConvert.SerializeObject(requestParam)}\r\nResponse {(restApiResult == null ? string.Empty : JsonConvert.SerializeObject(restApiResult))}"); } catch { } } return new QuanTanResponse() { Status = 0, Message = ex.Message }; } } } }