这一篇主要讲解Silverlight中如何调用bing搜索引擎进行网络搜索,关于bing这边就不做介绍了。
为了更好的进行知识的快速普及,调动最广大人民的积极性,我们还是采用以前的教学方式--图、码、文并进,手把手的教学方式。
首先确保你的电脑上已经安装了VS2010。
打开2010,New一个SilverlightApplication,取名SilverlightMySearch
接下来打开bing首页http://cn.bing.com/,出现下图页面
在地址栏中输入http://cn.bing.com/developer,出现下图页面
这边你如果没有账号可以先注册一个,有的话直接登录,注册完或者登录以后再进入http://cn.bing.com/developer页面,这时点击Get an AppID可以进入下图所示页面:
首次进入还没有AppID可以点选右边链接进入如下页面,填写必要的信息来取得一个AppID
创建成功取得AppID如下图所示,这个AppID以后都可以拿来使用
至此AppID的取得讲解完毕。
下面讲解如何在VS2010中添加这个引用,打开SilverlightMySearch,右击工程目录References选择Add Service Reference,在Address中填入http://api.search.live.net/search.wsdl?AppID=D30D45ADA751FB5B1AEC7B0D8D5852825498D57F,NameSpace这边取名MySearch,填写完点击OK,界面图如下:
点击完ok以后如果添加成功会出现下图所示,在工程中多了两个文件
添加引用完毕。
现在开始写代码,打开MainPage.xaml和MainPage.xaml.cs文件,这边我先把完成后的代码全部贴出来,再具体解释
MainPage.xaml
代码
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="800">
MainPage.xaml.cs
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;
using SilverlightMySearch.MySearch;
namespace SilverlightMySearch
{
public partial class MainPage : UserControl
{
//初始化一个客户端
LiveSearchPortTypeClient myCilent = new LiveSearchPortTypeClient();
public MainPage()
{
InitializeComponent();
//注册一个事件,用来处理搜索完成之后的事情
myCilent.SearchCompleted += new EventHandler
}
{
searchResultList.Visibility = doSearch.Visibility;
SearchRequest sr = new SearchRequest();
//在bing上注册的AppId
sr.AppId = "D30D45ADA751FB5B1AEC7B0D8D5852825498D57F";
//AppId版本
sr.Version = "2.0";
//搜索得到的资源,这边只搜索网页,当然可以通过SourceType的设定不同取得如Image、News、Video等
sr.Sources = new SourceType[] {SourceType.Web };
//搜索内容,即关键字
sr.Query = searchString.Text.Trim().ToString();
sr.Web = new SilverlightMySearch.MySearch.WebRequest()
{
CountSpecified=true,
//这边先让它显示50条
Count=50
};
//执行搜索
myCilent.SearchAsync(sr);
}
///
/// 搜索完成之后将结果加载到页面上的ListBox中
///
///
///
void myCilent_SearchCompleted(object sender, SearchCompletedEventArgs e)
{
searchResultList.Items.Clear();
foreach(var item in e.Result.Web.Results)
{
ListBoxItem lbi = new ListBoxItem();
lbi.Height = 120;
lbi.Width = searchResultList.Width;
StackPanel sp = new StackPanel();
//标题模块
TextBlock title = new TextBlock();
title.Text = item.Title;
title.TextWrapping = TextWrapping.Wrap;
title.FontSize = 20;
title.Foreground = new SolidColorBrush(Colors.Red);
sp.Children.Add(title);
//正文模块
TextBlock content = new TextBlock();
content.FontSize = 15;
content.TextWrapping = TextWrapping.Wrap;
content.Text = item.Description;
content.Foreground = new SolidColorBrush(Colors.Gray);
sp.Children.Add(content);
//url地址模块
TextBlock url = new TextBlock();
url.FontSize = 15;
url.TextWrapping = TextWrapping.Wrap;
url.Text = item.DisplayUrl;
url.Foreground = new SolidColorBrush(Colors.Green);
sp.Children.Add(url);
lbi.Content = sp;
searchResultList.Items.Add(lbi);
//点击标题后弹出具体网页页面
title.Tag = url.Text;
title.MouseEnter+=new MouseEventHandler(title_MouseEnter);
title.MouseLeave+=new MouseEventHandler(title_MouseLeave);
title.MouseLeftButtonUp+=new MouseButtonEventHandler(title_MouseLeftButtonUp);
}
}
void title_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
//用于弹出浏览器窗体
HtmlPopupWindowOptions ption = new HtmlPopupWindowOptions();
HtmlPage.PopupWindow((new UriBuilder((sender as TextBlock).Tag.ToString())).Uri, "", option);
}
void title_MouseEnter(object sender, MouseEventArgs e)
{
TextBlock tb = sender as TextBlock;
//鼠标放到TextBlock显示下划线
tb.TextDecorations = TextDecorations.Underline;
//鼠标放到TextBlock显示手型
tb.CaptureMouse();
tb.Cursor = Cursors.Hand;
}
void title_MouseLeave(object sender, MouseEventArgs e)
{
TextBlock tb = sender as TextBlock;
tb.Cursor = null;
tb.TextDecorations = null;
}
}
}
这边其实也没什么好讲的,代码中都加了注释。
首先需要添加两个命名空间
using System.Windows.Browser;
using SilverlightMySearch.MySearch;
一个用来弹出新页面,一个用来调用bing API。其他的没什么好讲了,读者只需将代码完全覆盖你项目中对应的两个文件即可,确保你的电脑已经连网,运行出现如下效果:
有需要的可以将它下载下来,再根据MainPage.xaml中的具体路径将其添加到相应的工程目录中,如果不需要,请将MainPage.xaml中的背景路径删除,确保编译通过。
至此,整个流程讲解完毕,谢谢大家!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9914930/viewspace-666945/ ,如需转载,请注明出处,否则将追究法律责任。