Я использовал некоторую комбинацию либо превращения словаря в строку, либо размещения его в URL-адресе непосредственно после API root или в объекте HttpRequestMessage, на других API-интерфейсах, но по какой-то причине с Poloniex по какой-то причине. api Я всегда сталкиваюсь с ошибкой «Неверная команда».
long timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
var bodyDict = new Dictionary<string, string>();
bodyDict["command"] = "returnBalances";
bodyDict["nonce"] = timestamp.ToString();
var stringifiedBodyDict = JsonConvert.SerializeObject(bodyDict);
var parameterStr = $"command=returnBalances&nonce={timestamp}";
var str_to_sign = Encoding.UTF8.GetBytes(stringifiedBodyDict);
var encodedSecretKey = Encoding.UTF8.GetBytes(platformCredentials.secretKey);
var hashSig = new HMACSHA512(encodedSecretKey).ComputeHash(str_to_sign);
var signature = BitConverter.ToString(hashSig).Replace("-", "");
var apiUri = $"https://poloniex.com/tradingApi?{stringifiedBodyDict}";
var httpClient = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri(apiUri),
Headers =
{
// {HttpRequestHeader.Accept.ToString(), "application/json"},
// {HttpRequestHeader.ContentType.ToString(), "application/x-www-form-urlencoded"},
{"Key", platformCredentials.apiKey},
{"Sign", signature}
},
Content = new StringContent(stringifiedBodyDict, Encoding.UTF8, "application/x-www-form-urlencoded")
};
var response = await httpClient.SendAsync(request);
var responseStr = await response.Content.ReadAsStringAsync();
Я пробовал сочетания использования строкового словаря в содержимом apiUri и HttpRequestMessage, только в одном или другом, и пытался различными перестановки комментируемых заголовков. Я не могу пройти через это сообщение об ошибке.