设为首页 收藏本站
查看: 1033|回复: 0

Windows Phone 7 开发 31 日谈——第25日:外部API

[复制链接]

尚未签到

发表于 2015-5-8 09:46:19 | 显示全部楼层 |阅读模式
  本文是“Windows Phone 7 开发 31 日谈”系列的第25日。
  昨天我写了如何在你的应用程序中嵌入字体,视频和图片。今天,我们来讨论从Web Service中获取数据,并将它们填入到你的应用程序中。
  介绍Twitter API
  如果你之前没有玩儿过这个,那你肯定会常听我将一个Twitter应用程序比喻为“Hello, world!”程序。原因很简单,因为几乎每一个应用程序都需要连接Web Service,Twitter的API用起来非常简单,并且是免费的,不需要任何注册。换句话说,你可以无障碍地介入,这是学习新技术的一种好方法。
  有关Twitter API的关键内容可以在这里找到:http://dev.twitter.com/。我们来看看用户时间线元素的API,利用这个指定的URL模板:http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=jeffblankenburg。这里的用户名,jeffblankenburg ,可以用任意的Twitter用户名替换。如果点击我给你提供的URL,你会看到很多XML文档。这个文档包含了我最近的Twitter信息,以及大量的元数据。以下是这个文档中的一个节点:

DSC0000.gif DSC0001.gif 代码


  Sun Oct 24 13:30:04 +0000 2010
  28594986565
  Day #24: Embedding Fonts in Windows Phone 7 http://bit.ly/wp7day24 #wp7 #wp7dev #31daysofwp7
  
    TweetDeck
  
  false
  false
  
  
  
  
  false
  
    5688882
    Jeff Blankenburg
    jeffblankenburg
    Columbus, OH
    I'm a passionate technologist, husband, and father in Columbus, OH. I work for a small software company located in Redmond, WA. #wp7 http://blankensoft.com
    http://a3.twimg.com/profile_images/396764567/jeffblankenburgheadshot_normal.jpg
    http://www.jeffblankenburg.com
    false
    1962
    131516
    333333
    994700
    cccccc
    999999
    652
    Tue May 01 15:54:53 +0000 2007
    201
    -18000
    Eastern Time (US & Canada)
    http://s.twimg.com/a/1287010001/images/themes/theme14/bg.gif
    true
    true
    false
    true
    false
    true
    5664
    en
    false
    false
    151
    false
  
  
  
  
  
对于上面的内容要记住的是这仅仅是XML,没有什么神秘的,也没神秘特别的。网络中大多数Web Service都提供了XML源,一般来说,我们可以以一种统一的方式来处理它们。    将XML数据从网络中获取到我们的应用程序
  从手机中正在运行的应用程序上在线获取XML数据非常简单(只需3行!)。最重要的是要由你来检测用户是否已经获取到了连接。下面是一种非常简单的方法,使用Microsoft.Phone.Net.NetworkInformation程序集:
  

if (NetworkInterface.GetIsNetworkAvailable())    在这个循环中,我们要创建一个WebClient对象,并异步调用我刚刚给你的地址中的Twitter API。首先,我为数据检索完成后创建了一个事件处理程序,然后发起异步调用。(在这个例子中,你会看到我用了一个文本框中来获取用户输入的用户名)

代码

if (NetworkInterface.GetIsNetworkAvailable())
{
    WebClient twitter = new WebClient();
    twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
    twitter.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + TwitterNameBox.Text));
}  当返回数据时,事件处理程序会被调用,此时我们需要添加一些内容。
  在应用程序中使用XML
  当我们程序中获取到了数据时,就要真正地在屏幕上显示它们了。在我的其他例子中,我展示了如何将一个值绑定到XAML控件上。但本文重点不在此(虽然下面的示例代码中包含这些内容),相反,我们来看看如何用LINQ来解析XML数据。
  为此,需要引入另一个名称空间,System.Xml.Linq。把它加入后,数据就变的非常简单了。我们需要一个新的XElement对象来保存XML数据。
  

XElement xmlTweets = XElement.Parse(e.Result);    一旦xmlTweets中保存了我们的数据,剩下要做的就是将它绑定到一个ListBox中,并使用LINQ从这些数据中创建自定义的TwitterItem对象。


TwitterList.ItemsSource = from tweet in xmlTweets.Descendants("status") select new TwitterItem{message = tweet.Element("text").Value};  你会看到在下面的示例代码中,我自定义的TwitterItem类中包含一个“message”属性。
  就是这样!我们从XML源中实时抓取数据,然后再程序中处理它们,最后将它们显示在ListBox中。至于完整的示例,参见下面的代码:
  下载示例代码
  这是一个完全可以运行的(但肯定不是包含所有功能的)Twitter客户端。你可以在文本框中输入一个用户名,然后程序就会连接Twitter API,抓取数据,解析并在程序中显示。
DSC0002.png
  原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-25-Talking-To-External-APIs.aspx
  


如果大家喜欢我的文章,请点击“推荐”,谢谢!    

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-64885-1-1.html 上篇帖子: 不可或缺 Windows Native (7) 下篇帖子: Windows Phone 7屏幕分辨率之争
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表