Что я здесь не так делаю?Я думаю, что с моим HMAC что-то не так, но не бегло, ответы на другие вопросы не отвечают, здесь я всегда получаю сообщение об ошибке (403).
Я пытаюсь подключиться к полонию и получить данные текущего баланса..
void Start()
{
string nonce = DateTime.Now.ToString("HHmmss");
NonceText.text = nonce;
const string WEBSERVICE_URL = "https://poloniex.com/tradingApi";
try
{
var webRequest = System.Net.WebRequest.Create(WEBSERVICE_URL);
if (webRequest != null)
{
webRequest.Method = "POST";
//webRequest.Timeout = 12000;
webRequest.ContentType = "application/x-www-form-urlencoded";
byte[] dataStream =
Encoding.UTF8.GetBytes("command=returnBalances&nonce=" + nonce);
webRequest.Headers.Add("Key", _apiKey);
webRequest.Headers.Add("Sign", genHMAC(dataStream));
Stream newStream = webRequest.GetRequestStream();
newStream.Write(dataStream, 0, dataStream.Length);
newStream.Close();
SignText.text = genHMAC(dataStream).ToString();
using (System.IO.Stream s =
webRequest.GetResponse().GetResponseStream())
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
{
var jsonResponse = sr.ReadToEnd();
OutputText.text = jsonResponse.ToString();
}
}
}
}
catch (WebException ex)
{
OutputText.text = ex.ToString();
}
}
//end-of-start()
private string genHMAC(byte[] dataStreamInput)
{
byte[] APISecret_Bytes =
System.Text.Encoding.UTF8.GetBytes(_apiSecret);
HMACSHA512 hmac = new HMACSHA512(APISecret_Bytes);
var signBytes = hmac.ComputeHash(dataStreamInput);
string HexDecString = string.Empty;
for (int i = 0; i < signBytes.Length; i++)
{
HexDecString += signBytes[i].ToString("X2");
}
return HexDecString;
}
Кроме того, у меня есть только 1 проблема здесь или несколько проблем, которые были в этом коде в течение нескольких месяцев.