public async Task <RobotResponse> Post(string token, string secret, IRobotMessage robotMessage) { if (string.IsNullOrWhiteSpace(token)) { throw new Exception("token is null or empty!"); } if (string.IsNullOrWhiteSpace(secret)) { throw new Exception("token is null or empty!"); } var timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(); var secretEnc = Encoding.UTF8.GetBytes(Secret); var stringToSign = $"{timestamp}\n{Secret}"; var stringToSignEnc = Encoding.UTF8.GetBytes(stringToSign); var hmac256 = new HMACSHA256(secretEnc); var hashMessage = hmac256.ComputeHash(stringToSignEnc); var sign = Convert.ToBase64String(hashMessage); var httpClientHandler = new HttpClientHandler(); httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true; var http = new HttpClient(httpClientHandler); var str = new StringContent(JsonConvert.SerializeObject(robotMessage), Encoding.UTF8, "application/json"); var httpResponseMessage = await http.PostAsync($"{BaseUrl}{Token}×tamp={timestamp}&sign={sign}", str); var res = await httpResponseMessage.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <RobotResponse>(res)); }
public async Task <RobotResponse> Post(IRobotMessage robotMessage) { return(await Post(Token, Secret, robotMessage)); }