首页 > 解决方案 > C# 中用于硬币点的 REST API

问题描述

我正在做一些研究来构建一个使用澳大利亚加密交易平台 Coinspot 的程序。我过去使用过 API,但大麦使用“POST”方法,Coinspots 信息和文档太差了(可能是因为他们不想让你使用它),但我想我还是试一试。

问题:如果您不知道发送数据的顺序,如何使用 POST 方法?(是否有标准或者每个 API 都不同)。

我有一个 API 密钥和一个秘密 API 密钥要发送以进行授权,但仍然被拒绝访问。无论如何,您是否可以使用代码来请求订单或类似将 json 拉到字符串时所做的事情?

            WebRequest request = WebRequest.Create("https://www.coinspot.com.au/api/ro/balances");
            request.Method = "POST";
            request.Headers.Add("key", APIKEY);
            request.ContentType = "application/json";

            request.GetResponse(); //THIS IS WHERE IT ERRORS WITH AUTHENTICATION

抱歉,如果这是一个擦洗问题,但我认为我以正确的方式看待这个问题,我也在使用 .NET 库 json newtonsoft 所以任何关于这方面的信息都会很棒!

标签: c#apijson.net

解决方案


.NET Core 对有点过时但功能强大的CoinSpot node.js api 客户端的解释

var nonce = Utility.GetEpochTime();
var postData = new { nonce };
var jsonMessage = postData.ToJson();
var hmac = new HMACSHA512(Encoding.ASCII.GetBytes("CoinSpotSecret"));
var byteArray = Encoding.ASCII.GetBytes(jsonMessage);

using (var stream = new MemoryStream(byteArray)) {
    var hash = hmac.ComputeHash(stream).Aggregate("", (s, e) => s + String.Format("{0:x2}", e), s => s);
    var uri = new Uri("https://www.coinspot.com.au/api/ro/my/balances", UriKind.Absolute);
    var content = new StringContent(
                  jsonMessage,
                  System.Text.Encoding.UTF8,
                  "application/json"
                  );

    content.Headers.Add("sign", hash);
    content.Headers.Add("key", "CoinSpotKey");
    
    var response = await httpClient.PostAsync(uri, content);

    if (response.IsSuccessStatusCode) {
        return await response.Content.ReadAsStringAsync();
    }
}

推荐阅读