对于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)

 

版权声明:本文为db2-smile原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/db2-smile/p/5081984.html