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, насколько я могу судить.
Есть идеи?