我想使用RIOT API来制作适用于UWP的League of Legends应用。
当我访问他们的网站以生成JSON时,我会得到类似于以下内容:
{"gigaxel": {
"id": 36588106,
"name": "Gigaxel",
"profileIconId": 713,
"revisionDate": 1451577643000,
"summonerLevel": 30
}}
当我使用Visual Studio 2015中的特殊粘贴方法将此JSON选择并复制到一个新类中时,我会得到具有以下属性的这些类:
public class Rootobject
{
public Gigaxel gigaxel { get; set; }
}
public class Gigaxel
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public long revisionDate { get; set; }
public int summonerLevel { get; set; }
}
我创建了一个名为
LOLFacade
的新类,用于连接RiotAPI: public class LOLFacade
{
private const string APIKey = "secret :D";
public async static Task<Rootobject> ConnectToRiot(string user,string regionName)
{
var http = new HttpClient();
string riotURL = String.Format("https://{0}.api.pvp.net/api/lol/{0}/v1.4/summoner/by-name/{1}?api_key={2}",regionName, user, APIKey);
var response = await http.GetAsync(riotURL);
var result = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<Rootobject>(result);
}
}
这是按钮事件处理程序方法:
Rootobject root = new Rootobject { gigaxel = new Gigaxel() };
root = await LOLFacade.ConnectToRiot("gigaxel","EUNE");
string name = root.gigaxel.name;
int level = root.gigaxel.summonerLevel;
InfoTextBlock.Text = name + " is level " + level;
为了测试目的,我将regionName和用户硬编码。这适用于我的用户名:“gigaxel”。
当我尝试使用另一个用户名,例如“xenon94”时,我会收到一个异常:
Object reference not set to an instance of an object.
当我将Rootobject中的属性名称从gigaxel改为xenon94时,格式如下:
public class Rootobject
{
public Gigaxel xenon94 { get; set; }
}
当我重新编译我的代码时,它可以适用于用户名xenon94
,但对于我的用户名"gigaxel"
却不能正常工作。
我希望它可以适用于任何给定的用户名。