проблема с coinmarketcap при попытке указать более одной валюты - PullRequest
1 голос
/ 20 июня 2020

API coinmarketcap имеет конечную точку https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest

, которая принимает параметры convert_id или convert в строке запроса, однако, если вы укажете более 1 идентификатора валюты или более 1 кода валюты , Я получаю ошибку 400. Согласно документации, вы должны иметь возможность указать более 1. Например, «USD, BT C» для параметра convert (или «2781,1» для параметра convert_id) вернет (400) Bad Request, но с указанием «USD» (или «2781») работает нормально.

Вот код, который я использую:

 public static string GetHttpDataJSONStr(string URL, Dictionary<string, string> Params, MethodType Method, string API_KeyName, string API_KeyValue)
    {
        string retval = string.Empty;
        var values = new System.Collections.Specialized.NameValueCollection();
        if (Params != null)
        {
            foreach (KeyValuePair<string, string> Param in Params)
            {
                values.Add(Param.Key, Param.Value);
            }
        }
        using (WebClient client = new WebClient())
        {
            try
            {
                client.Headers.Add(API_KeyName, API_KeyValue);
                client.Headers.Add("Accepts", "application/json");
                if (Method == MethodType.GET)
                {
                    UriBuilder bldr = new UriBuilder(URL);
                    if (values.Count > 0)
                    {
                        bldr.Query = ToQueryString(values);
                    }
                    retval = client.DownloadString(bldr.ToString());
                }
                else
                {
                    byte[] bytes = client.UploadValues(URL, "POST", values);
                    retval = Encoding.UTF8.GetString(bytes);
                }
            }
            catch (Exception ex)
            {
                retval = ex.ToString();
            }
        }
        return retval;
    }

, и это работает для всех других параметров (разделенных запятыми), таких как параметр id ( для указания нескольких монет / токенов в строке CSV), поэтому я считаю, что мой код работает нормально. (ПРИМЕЧАНИЕ: с помощью метода GET). Я считаю, что это может быть ошибка на их стороне (или их документация неверна, что вы можете указать более одной цитаты), но не могу быть слишком уверенным (и нет места для сообщения об ошибках на их веб-сайте API). Вот точный URI, отправленный им:

https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?id=1%2c1027%2c825%2c1839%2c3635%2c512%2c3957%2c3408%2c1321%2c74%2c3897%2c291%2c4705%2c2092&convert=BTC%2cUSD%2cAUS

Если я использую https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?id=1%2c1027%2c825%2c1839%2c3635%2c512%2c3957%2c3408%2c1321%2c74%2c3897%2c291%2c4705%2c2092&convert=BTC, он работает нормально (ПРИМЕЧАНИЕ: я удалил две другие валюты).

Документация здесь: https://coinmarketcap.com/api/documentation/v1/#operation / getV1CryptocurrencyQuotesLatest , и эти вызовы поддерживаются для всех типов учетных записей API, насколько я могу судить.

Есть идеи?

1 Ответ

1 голос
/ 16 июля 2020

Согласно планам CoinMarketCap API , с бесплатной подпиской вы можете использовать опцию convert только для 1 валюты за звонок. Ознакомьтесь с описанием ошибки, которую вы получаете, вы должны увидеть что-то вроде error_message: "Your plan is limited to 1 convert options".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...