CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

Windows Mobile中的WebService应用

作者: ,  出处:CSDN, 责任编辑: 叶江, 
2006-03-23 16:04
  Web Service对于开发者来说已经不再是一个陌生概念了。Web Service允许应用程序通过Internet进行通讯和数据交换。随着微软.NET战略的推行,这种可编程的、通过SOAP协议、基于XML的网络协议已经赢得了开发者的心。

  WebService对于开发者来说已经不再是一个陌生概念了。Web Service允许应用程序通过Internet进行通讯和数据交换。随着微软.NET战略的推行,这种可编程的、通过SOAP协议、基于XML的网络协议已经赢得了开发者的心。

  现在,随着无线数据网络的发展,移动设备如何访问网络资源的问题显得格外突出。我们目前已经拥有了GPRS和CDMA的广域数据通讯网络,很多地方也覆盖了WI-FI的无线数据局域网。如何让我们的应用程序更好的利用网络资源?

  Windows Mobile移动设备为我们提供了.NET Compact Framework,为我们开发移动应用程序带来的了极大的方便。.NET Compact Framework也提供了方便的Web Service访问方式,帮助开发者来编写基于Web Service的移动应用程序。

  目前来看,Windows Mobile应用程序访问Web Service的应用主要出现在两个方面:首先是个人应用程序需要获取公共数据服务,比如获取天气预报、地理信息等;其次是,基于Windows Mobile的企业级应用将核心服务发布成Web Service形式,由移动应用程序进行调用。

  我们这次主要讨论调用公众数据服务Web Service的情况,以Google和MapPoint Web Service为样本,讲述如何在Windows Mobile应用程序中调用搜索引擎和地图服务。

  访问Google Web Service

  Google是目前网络上最流行的搜索引擎之一,关键字搜索完全改变了网络信息的组织形式。Google很早就提供了公共Web Service服务,允许应用程序访问Google提供的搜索、拼写检查和页面缓存的功能。Google Web Service的每个帐号一天最多查询一千次。

  在使用Google之前,我们必须去www.google.com/apis,申请一个Google Account。注册成功后,会收到一个Google的关键字,每次调用的时候,都要提供这个关键字。

  在申请成功后,我们可以动手开发自己的应用程序了。我们在Visual Studio 2005 Beta 2中创建一个Device Application。然后我们要为Google Web Service添加一个Web引用。在Project菜单中选择Add Web Reference,在URL里输入 http://api.google.com/GoogleSearch.wsdl,选择Add Reference按钮就可以了。这样,我们就把Google Web Service添加到我们的应用程序中来了。

  我们先来认识一下Google Web Service中的对象。这些对象设计得和Google的主页一样简单。

 对象  说明
 DirectoryCategory  ODP目录的内容和种类
 GoogleSearchResult  Goolge查询结果
 GoogleSearchService  Google查询服务对象
 ResultElement  查询结果集元素

  我们下面就来用这些对象来编写一个简单的Google查询的程序。我们首先要介绍一个重要的API:GoogleSearchService下的doGoogleSearch。

public GoogleSearchResult doGoogleSearch(
    string key, // Google Key
    string q, // 查询内容
    int start, // 从第几条结果开始返回
    int maxResults, // 最多返回多少条(最多10条)
    bool filter, // 是否自动过滤相似或来源相同的结果
    string restrict, // 限制查询结果来自Google Web 索引的一个子集
    bool safeSearch, // 是否过滤成年人内容
    string lr, // 语言限制(”lang_zh-CN”为中文)
    string ie, // 输入编码
    string oe) // 输出编码

  在某些情况下,我们需要设置代理服务器来访问一些网络资源,所以,我们要引入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[i];
        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返回的是所有符合条件的记录。

共2页。 1 2 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i