HitBTC api POST请求,C#

HitBTC api POST请求,C#,c#,post,webrequest,C#,Post,Webrequest,我知道如何执行GET请求,但POST不起作用: public string Order() { var client = new RestClient("http://api.hitbtc.com"); var request = new RestRequest("/api/2/order", Method.POST); request.AddQueryParameter("nonce", GetNonce().ToString());

我知道如何执行GET请求,但POST不起作用:

public string Order()
    {
        var client = new RestClient("http://api.hitbtc.com");
        var request = new RestRequest("/api/2/order", Method.POST);
        request.AddQueryParameter("nonce", GetNonce().ToString());
        request.AddQueryParameter("apikey", HapiKey);

       // request.AddParameter("clientOrderId", "");
        request.AddParameter("symbol", "BCNUSD");
        request.AddParameter("side", "sell");
        request.AddParameter("quantity", "10");
        request.AddParameter("type", "market");

        var body = string.Join("&", request.Parameters.Where(x => x.Type == ParameterType.GetOrPost));

        string sign = CalculateSignature(client.BuildUri(request).PathAndQuery + body, HapiSecret);
        request.AddHeader("X-Signature", sign);

        var response = client.Execute(request);
        return response.Content;
    }
    private static long GetNonce()
    {
        return DateTime.Now.Ticks * 10;
    }

    public static string CalculateSignature(string text, string secretKey)
    {
        using (var hmacsha512 = new HMACSHA512(Encoding.UTF8.GetBytes(secretKey)))
        {
            hmacsha512.ComputeHash(Encoding.UTF8.GetBytes(text));
            return string.Concat(hmacsha512.Hash.Select(b => b.ToString("x2")).ToArray());
        }
    }
错误:代码:1001,“需要授权”

我的失败在哪里?对于v2,“apikey”和“X签名”是否不再正确


非常感谢你帮助我

请查看身份验证

您需要使用使用公钥和私钥的基本身份验证

RestSharp的示例:

var client = new RestClient("https://api.hitbtc.com")
{
    Authenticator = new HttpBasicAuthenticator(<PublicKey>, <SecretKey>)
};

为什么HitBtc认为需要传递私钥?几乎所有其他的交换都使用私钥的散列,无需通过电线传递。我知道这是https连接,但仍然…令人震惊的是,加密技术的加密程度有多糟糕。基本的身份验证似乎不再有效。不过,他们允许您使用第二种授权
var client = new RestClient("https://api.hitbtc.com")
{
    Authenticator = new HttpBasicAuthenticator(PublicKey, SecretKey)
};

var request = new RestRequest("/api/2/order", Method.POST)
{
    RequestFormat = DataFormat.Json
};

request.AddParameter("symbol", "BCNUSD");
request.AddParameter("side", "sell");
request.AddParameter("quantity", "10");
request.AddParameter("type", "market");
request.AddParameter("timeInForce", "IOC");

var response = client.Execute(request);
if (!response.IsSuccessful)
{
    var message = $"REQUEST ERROR (Status Code: {response.StatusCode}; Content: {response.Content})";
    throw new Exception(message);
}