C# 使用HttpClient的Json api

C# 使用HttpClient的Json api,c#,json,api,windows-10-universal,C#,Json,Api,Windows 10 Universal,如何从这个特定的JSON API获取货币汇率?我已经在不同的API中使用了这段代码,它工作得很好,但是使用这个API我不知道如何获得货币值 例如,此api:http://api.fixer.io/latest有效,而代码中的这个无效 我看到他们是不同的,但不知道为什么和什么是不同的 谢谢 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http

如何从这个特定的JSON API获取货币汇率?我已经在不同的API中使用了这段代码,它工作得很好,但是使用这个API我不知道如何获得货币值

例如,此api:
http://api.fixer.io/latest
有效,而代码中的这个无效

我看到他们是不同的,但不知道为什么和什么是不同的

谢谢

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading.Tasks;

namespace Pretvornik
{
   public class Pozovi
   {  
        public async static Task<RootObject> Dohvati()
        {        
            var otvaranje = new HttpClient();
            var url = String.Format("http://hnbex.eu/api/v1/rates/daily/");
            var odgovor = await otvaranje.GetAsync(url);
            var rezultat = await odgovor.Content.ReadAsStringAsync();
            var serija = new DataContractJsonSerializer(typeof(RootObject));

            var memstr = new MemoryStream(Encoding.UTF8.GetBytes(rezultat));
            var podatci = (RootObject)serija.ReadObject(memstr);
            return podatci;
        }
    }

    [DataContract]
    public class RootObject
    {
        [DataMember]
        public string selling_rate { get; set; }
        [DataMember]
        public string buying_rate { get; set; }
        [DataMember]
        public string median_rate { get; set; }
        [DataMember]
        public string currency_code { get; set; }
        [DataMember]
        public int unit_value { get; set; }
    }
}

您得到的json响应是一个数组,但是当您设置
DataContractJsonSerializer
时,您需要一个与
RootObject
匹配的对象。换成

newdatacontractjsonserializer(typeof(List))

您还需要将ReadObject行更改为:

(List<RootObject>)serija.ReadObject(memstr);
(列表)serija.ReadObject(memstr);

最后,您需要将方法的返回类型更改为:
Task

非常感谢,但是我得到的“Task”是一种类型,在给定的上下文中无效”,您也能帮我吗?带有更改的代码对我来说很好。调用方法
Dohvati
时会发生这种情况吗?我在任务Dohvati(字符串a){}中没有返回。非常感谢您的帮助:)该方法签名与问题中的签名不同,是现在给出错误的签名吗?或者问题中的那一个应该接受字符串吗?我在Task Dohvati(){}中遇到错误,所以我尝试了Task Dohvati(string a){},但仍然无法设置return。你能发布你的代码吗?谢谢
(List<RootObject>)serija.ReadObject(memstr);