Windows Mobile中的Web Service应用 02
- UID
- 872238
|
Windows Mobile中的Web Service应用 02
在某些情况下,我们需要设置代理服务器来访问一些网络资源,所以,我们要引入System.Net的命名空间,然后创建一个Web Proxy赋给GlobalProxySelection,才能保证我们调用Web Service的正常。
WebProxy proxy = new WebProxy("itgproxy",80);
proxy.BypassProxyOnLocal = true;
GlobalProxySelection.Select = proxy;
在上面的代码里我们首先创建一个WebProxy,地址为” itgproxy”,端口为80。然后选择本地地址不使用代理服务器,最后设置到GlobalProxySelection中。
下面我们把完整的代码写出来:
try
{
WebProxy proxy = new WebProxy("itgproxy",80);
proxy.BypassProxyOnLocal = true;
GlobalProxySelection.Select = proxy;
GoogleSearchService service = new GoogleSearchService();
GoogleSearchResult result = service.doGoogleSearch(
key, // 查询Key
textBox1.Text, // 内容
0, // 从第几条结果开始返回
10, // 最多返回的条数(最大10条)
false, // 是否自动过滤相似或来源相同的结果
"", // 限制查询结果来自Google Web索引的一个子集
false, // 是否过滤成年人内容
"", //"lang_zh-CN", // 语言限制
"", // 输入编码
""); // 输出编码
for(int i = 0; i <= (result.endIndex - result.startIndex); i++)
{
ResultElement element = result.resultElements;
listBox1.Items.Add(element.title);
listBox1.Items.Add(element.snippet);
listBox1.Items.Add(element.URL);
}
MessageBox.Show(result.estimatedTotalResultsCount.ToString());
}
catch (System.Web.Services.Protocols.SoapException ex)
{
MessageBox.Show(ex.Message);
}
在设置好代理服务器后,我们创建一个GoogleSearchService的对象,然后调用该对象的doGoogleSearch方法。我们将得到一个GoogleSearchResult的结果集,通过endIndex和startIndex属性,我们可以获得查询结果的数量。我们从结果集对象的resultElements中获得ResultElement对象,然后把标题、简介和URL显示到listBox中去。最后我们可以用结果集对象的estimatedTotalResultsCount属性,来获取一共找到了多少个结果。我们上边曾经说过,每次查询最多只能返回10个结果,但是estimatedTotalResultsCount返回的是所有符合条件的记录。
访问MapPoint Web Service
MapPoint是微软提供的一个地图信息的Web Service,提供全球各地的地理信息和商业网点信息(主要是北美和欧洲地区)。MSN Search推出的地理搜索服务也是基于MapPoint Web Service服务的。目前MapPoint还不包括中国的地理信息。
Windows Mobile设备的存储空间比较小,所以很难保存大量的地图数据。但是随着无线网络的普及,Windows Mobile设备就可以方便地查询保存在服务器上的地图数据和黄页信息。MapPoint Web Service还可以结合Windows Mobile设备上的GPS定位系统或者LBS服务,查询附近的旅游景点和商业场所,这对于移动应用也具有十分现实的意义。
MapPoint是一个收费的Web Service,不过,我们可以申请一个60天的测试帐号。MSDN的订户还可以申请一个为期一年的帐号,用于应用程序的开发。在申请到帐号后,我们不但可以查询公共的地理信息,还可以上传自己的地理信息,用于支持自定义的地理信息查询。
我们创建一个Windows Mobile Device Application,然后添加一个Web Reference,URL为“http://staging.mappoint.net/standard-30/mappoint.wsdl”。
在编写程序之前,我们先来看一下MapPoint中需要用到的类和方法。
类方法
说明
FindServiceSoap
包括查询服务(find service)的方法和属性
RenderServiceSoap
包括查询结果表示服务(render service)的方法和属性
FindSpecification
用于指定FindServiceSoap.Find的查询信息
FindResults
FindServiceSoap查询操作的单个结果
ViewByScale
包含地图定义地图比例和基准点
MapOptions
包含RenderServiceSoap.GetMap方法的地图显示选项
Pushpin
包括图钉的图标、标签、定位、用户指定数字
MapSpecification
包含地图显示的详细规范
MapImage
RenderServiceSoap.GetMap返回的地图
我们首先来创建MapPoint查询过程中最重要的两个对象:
FindServiceSoap fws = new FindServiceSoap();
RenderServiceSoap ws = new RenderServiceSoap();
fws.Credentials = new NetworkCredential(myUserName, myPassword);
ws.Credentials = new NetworkCredential(myUserName, myPassword);
FindServiceSoap是提供地图查询服务的主要对象,RenderServiceSoap是表现查询结果地图的主要对象。在使用之前,我们要先创建一个NetworkCredential对象,将MapPoint的用户名和密码传给FindServiceSoap和 RenderServiceSoap的Credentials属性。 |
|
|
|
|
|