首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RestSharp:在Dem-api.hitbtc.com中发布请求不起作用

RestSharp:在Dem-api.hitbtc.com中发布请求不起作用
EN

Stack Overflow用户
提问于 2017-06-06 14:51:59
回答 1查看 725关注 0票数 0

我想为演示-api.hitbtc.com创建一个机器人。所有的请求都很好。

代码语言:javascript
运行
复制
using System;
using System.Security.Cryptography;
using RestSharp;
using System.Linq;
using System.Text;

static void Main(string[] args)
    {
        const string apiKey = "xxx";
        const string secretKey = "xxx";

        var client1 = new RestClient("http://demo-api.hitbtc.com");
        var request1 = new RestRequest("/api/1/trading/new_order", Method.POST);
        request1.AddParameter("nonce", GetNonce().ToString());
        request1.AddParameter("apikey", apiKey);

        string sign1 = CalculateSignature(client1.BuildUri(request1).PathAndQuery, secretKey);
        request1.AddHeader("X-Signature", sign1);

        request1.RequestFormat = DataFormat.Json;
        request1.AddBody(new
        {
            clientOrderId = "58f32654723a4b60ad6b",
            symbol = "BTCUSD",
            side = "buy",
            quantity = "0.01",
            type = "market",
            timeInForce = "GTC"
        });

        var response1 = client1.Execute(request1);

        Console.WriteLine(response1.Content);
        Console.ReadLine();
}

        private static long GetNonce()
    {
        return DateTime.Now.Ticks * 10 / TimeSpan.TicksPerMillisecond; // use millisecond timestamp or whatever you want
    }

    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()); // minimalistic hex-encoding and lower case
        }
    }

但是,当我想尝试POST请求时,我得到了以下错误:

代码语言:javascript
运行
复制
{"code":"InvalidContent","message":"Missing apikey parameter"}

在hitbtc.com中,API文档曾说过:“每个请求都应该包括以下参数: nonce、apikey、signature”。问题出在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 15:14:08

在执行POST操作时,RestSharp默认会删除查询字符串参数。要解决这个问题,您需要告诉它您的参数是查询字符串参数:

代码语言:javascript
运行
复制
request1.AddQueryParameter("nonce", GetNonce().ToString());
request1.AddQueryParameter("apikey", apiKey);

而不是使用reqest1.AddParameter(name, value)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44393280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档