Как получить значение биткойна для соответствующего значения COP в ASP.NET C#?
Я хочу получить значение биткойна для соответствующего значения копа и сохранить его в таблице или переменной. Я получил этот URL, с которого я могу получить значение биткойна для суммы в долларах США. Я искал на bitpay, и я нашел этот URL.
Например:
100.000 коп = 0,0248 бат
https://bitpay.com/downloads/bitpayApi.pdf
Я старался:
вар ури =
String.Format (" https://bitpay.com/rates/COP", Convert.ToDecimal (textBox1.Text));
WebClient client = new WebClient();
client.UseDefaultCredentials = true;
var data = client.DownloadString(uri);
var result = Convert.ToDouble(data);
textBox3.Text = data;
в конце, его значение COP, которое мы хотим конвертировать в биткойны. Я хочу получить результат в переменной в C# (бэкэнд).
Как я могу сделать это?
1 ответ
Во-первых, вам нужно понять, как API реагирует на вас. Он отвечает JSON, которому всегда предшествует data: {}. Вы можете использовать Newtonsoft.Json и метод JObject.Parse(), чтобы найти токен данных и выбрать его свойства. Затем вы можете десериализовать это с помощью Newtonsoft.Json в класс, который моделирует ставки. У тарифа есть код, имя и свойства тарифа.
Давайте объявим наш класс:
public class RateModel {
public string Code { get; set; }
public string Name { get; set; }
public decimal Rate { get; set; }
}
Теперь нам нужно правильно вызвать API, чтобы получить ответ. Я сделал это в небольшом консольном приложении следующим образом:
private static void Main(string[] args) {
try {
string cryptoCurrencyCode = "BTC";
string countryCurrencyCode = "COP";
string uri = string.Format("https://bitpay.com/rates/{0}/{1}", cryptoCurrencyCode, countryCurrencyCode);
var client = new WebClient();
client.UseDefaultCredentials = true;
//Everything is returned inside of a "data" property, so let's select that token.
string data = JObject.Parse(client.DownloadString(uri)).SelectToken("data").ToString();
var rate = JsonConvert.DeserializeObject<RateModel>(data);
Console.WriteLine("1 {0} = {1} {2}", cryptoCurrencyCode, rate.Rate, countryCurrencyCode);
} catch (Exception ex) {
Console.WriteLine("Caught exception: {0}", ex.ToString());
} finally {
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();
}
}
И, конечно, если все, что нас интересует, это скорость, и мы не заботимся о представлении каких-либо других данных, таких как имя или код, то мы могли бы опустить создание класса для размещения других данных и просто выбрать сам этот токен:
var json = JObject.Parse(client.DownloadString(uri));
decimal rate = 0;
bool parsed = Decimal.TryParse(json.SelectToken("data").SelectToken("rate").ToString(), out rate);
if(!parsed) {
Console.WriteLine("Failed to parse the rate.");
} else {
Console.WriteLine("1 {0} = {1} {2}", cryptoCurrencyCode, rate, countryCurrencyCode);
}