Silverlight 2 (beta1)数据操作(7)
在这个例子中我将展示从Silverlight客户端调用FlickR REST APIs。最后实现如下图所示:
目录 第一部分:确定Silverlight用户界面你可以回顾我的End to End Silverlight Application 这篇帖子了解如何开始。首先在Blend中添加一个TextBox和Button控件,如下图所示:
务必在属性窗口为这些控件设置有意义的名称以便以后可以方便使用,我把这两个控件分别命名为searchTermTextBox和button。
拖一个示例图片到窗口中,接下来我们需要用到这个图片(你可以在SilverlightFlickRDemoFiles zip中使用cow.jpg这个图片)
还有一点务必设置它的名称,我命名为searchResultsImage
第二部分:本地打开文件对话框为了测试布局,我们添加一个打开文件对话框来处理客户端的图片。
在page.xaml中为Button按钮添加一个单击事件
<Button x:Name="button" Width="100" Height="50" Content="Go" Click="button_Click"在page.xaml.cs中编写按钮事件来调用打开文件对话框。
private void button_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "JPEG Files (*.jpg;*.jpeg)|*.jpg;*.jpeg | All Files (*.*)|*.*"; ofd.FilterIndex = 1; if (ofd.ShowDialog() == DialogResult.OK) { Stream stream = ofd.SelectedFile.OpenRead(); BitmapImage bi = new BitmapImage(); bi.SetSource(stream); searchResultsImage.Source = bi; stream.Close(); } }这段代码作用是打开系统本地文件对话框允许用者在本地磁盘选择文件。然后开发者只保存文件路径。注意我们怎样在客户端处理图片呢?
使用打开文件对话框,你可以上传文件到服务器或者存储文件到本地。但是这里我们是从flickr上查询图片。
第三部分:调用FlickR服务来查找图片现在我们进入程序的主要部分了,我们根据查询条件通过调用FlickRs REST API来获取图片结果集。并且当用户在图片上单击,可以自动跳至下一张图片。
首先,调用FlickRs REST API,你需要申请一个Key,从这里可以获取。
接下来,定义一个LoadPhotos()方法在Silverlight客户端调用REST API。
void LoadPhotos(string topic) { string apiKey = "<<get your own >>"; string secret = "<<get your own >>"; string url = String.Format(" /rest/?method=flickr.photos.search&api_key={1}&text={0}", topic, apiKey, secret); WebClient flickRService = new WebClient(); flickRService.DownloadStringCompleted += new DownloadStringCompletedEventHandler (flickRService_DownloadStringCompleted); flickRService.DownloadStringAsync(new Uri(url)); searchTermTextBox.Text = "Calling FlickR..."; }调用REST API完成之后,我们需要分析XML格式,你可以参考 这个页面,其格式基本上像下面样子:
<?xml version="1.0" encoding="utf-8" ?> <rsp stat="ok"> <photos page="1" pages="32769" perpage="100" total="3276843"> <photo id="2436622217" owner="22956152@N04" secret="6c8293bb5c" server="2070" farm="3" title="IMG_3492_resize" ispublic="1" isfriend="0" isfamily="0" /> <photo id="2437437876" owner="41848473@N00" secret="97a7e1a066" server="2303" farm="3" title="Eric & Dog" ispublic="1" isfriend="0" isfamily="0" /> </photos> </rsp>温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68833.html