wake-up-neo.net

Wie bekomme ich Daten von Json API mit c # mit httpwebrequest?

Ich möchte alle Variablen von https://api.coinmarketcap.com/v1/ticker/ in meiner C # -Konsolenanwendung abrufen.

Ich begann damit, die gesamte Seite als Stream zu erhalten. Was nun?

private static void start_get()
{
    HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create
        (string.Format("https://api.coinmarketcap.com/v1/ticker/"));

    WebReq.Method = "GET";

    HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();

    Console.WriteLine(WebResp.StatusCode);
    Console.WriteLine(WebResp.Server);

    Stream Answer = WebResp.GetResponseStream();
    StreamReader _Answer = new StreamReader(Answer);
    Console.WriteLine(_Answer.ReadToEnd());
}
7
D. Jung

Zunächst benötigen Sie eine benutzerdefinierte Klasse zur Deserialisierung:

public class Item
{
    public string id { get; set; }
    public string name { get; set; }
    public string symbol { get; set; }
    public string rank { get; set; }
    public string price_usd { get; set; }
    [JsonProperty(PropertyName = "24h_volume_usd")]   //since in c# variable names cannot begin with a number, you will need to use an alternate name to deserialize
    public string volume_usd_24h { get; set; }
    public string market_cap_usd { get; set; }
    public string available_supply { get; set; }
    public string total_supply { get; set; }
    public string percent_change_1h { get; set; }
    public string percent_change_24h { get; set; }
    public string percent_change_7d { get; set; }
    public string last_updated { get; set; }
}

Als Nächstes können Sie Newtonsoft Json , ein kostenloses JSON-Serialisierungs- und Deserialisierungs-Framework, folgendermaßen verwenden, um Ihre Artikel abzurufen (schließen Sie die folgenden using-Anweisungen ein):

using System.Net;
using System.IO;
using Newtonsoft.Json;

private static void start_get()
{
    HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(string.Format("https://api.coinmarketcap.com/v1/ticker/"));

    WebReq.Method = "GET";

    HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();

    Console.WriteLine(WebResp.StatusCode);
    Console.WriteLine(WebResp.Server);

    string jsonString;
    using (Stream stream = WebResp.GetResponseStream())   //modified from your code since the using statement disposes the stream automatically when done
    {
       StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
       jsonString = reader.ReadToEnd();
    }

    List<Item> items = JsonConvert.DeserializeObject<List<Item>>(jsonString);

    Console.WriteLine(items.Count);     //returns 921, the number of items on that page
}

Schließlich wird die Liste der Elemente in items gespeichert. 

11
Keyur PATEL

Eine vereinfachte Version von Keyur PATEL.

statisch void GetCoinValues ​​() {

        string json = new WebClient().DownloadString("https://api.coinmarketcap.com/v1/ticker/");

        List<Item> items = JsonConvert.DeserializeObject<List<Item>>(json);

        foreach (var item in items)
        {
            Console.WriteLine("ID: " + item.id.ToUpper());
            Console.WriteLine("Name: " + item.name.ToUpper());
            Console.WriteLine("Symbol: " + item.symbol.ToUpper());
            Console.WriteLine("Rank: " + item.rank.ToUpper());
            Console.WriteLine("Price (USD): " + item.price_usd.ToUpper());
            Console.WriteLine("\n");
        }
    }




}
0
agleno