Hmac подписывает API торговли Poloniex в C # Unity - PullRequest
0 голосов
/ 02 октября 2018

Что я здесь не так делаю?Я думаю, что с моим 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 проблема здесь или несколько проблем, которые были в этом коде в течение нескольких месяцев.

...