C# 使用HttpClient的Json api
如何从这个特定的JSON API获取货币汇率?我已经在不同的API中使用了这段代码,它工作得很好,但是使用这个API我不知道如何获得货币值 例如,此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
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);