对于api的调用
对于完成一个应用,我们应该思考的是:
1、如何获取数据和怎样对数据的进行相应的处理,
2、以怎样的方式向用户展示数据和确定对应的交互方式。
对于数据我们多是调用第三方的api,那如何调用呢,以一个天气应用为例,
其是对于第三方api,数据返回的格式有两种,一种是xml,一种是json。
以xml格式的api调用与解析
string url = “http://php.weather.sina.com.cn/xml.php?city=” + UrlEncode(searchcity.Text) + “&password=DJOYnieT8234jlsK&day=0”;
HttpClient httpClient = new HttpClient();
string result = await httpClient.GetStringAsync(url);
XDocument docXml = XDocument.Parse(result);
XElement Xml = docXml.Root;
XElement info = Xml.Element(“Weather”);
city.Text = info.Element(“city”).Value;
status.Text = info.Element(“status1”).Value;
以json格式的api调用与解析
string url = “http://openapi.aibang.com/search?app_key=aa182385cb49392872bc8d01292d86f3&city=武汉&q=饭店&alt=json”;
HttpClient httpClient=new HttpClient();
string result=await httpClient.GetStringAsync(url);
JObject o=(JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(result);
JToken o1=o[“bizs”];
JToken o2=o1[“biz”];
List<string> list = new List<string>();
foreach(JToken item in o2)
{
list.Add(item[“name”].ToString());
}
list1.ItemsSource=list;
在这里有个小坑,就是对于异步方法,最简单的就是在需要在方法前加async,如果需要有返回值,就task
async private void Button_Click(object sender, RoutedEventArgs e)