使用 Visual Basic .NET 访问 Google 的 Web 服务 算神 十一月 22, 2010 旧Blog文章归档 share Facebook Twitter Google + LinkedIn Pinterest Email Share... Web 服务真酷 Web 服务方兴未艾,它是最激动人心的技术,正在对 Internet 和商业领域产生巨大的影响。使用 Web 服务可以以常规方式开展业务,而将 Internet 作为传输工具,通过防火墙执行远程过程调用。Google 是提供公共 Web 服务的先驱之一,允许任何开发人员访问 Google 的搜索、缓存和拼写检查服务。Visual Studio .NET 简化了访问 Google Web API 服务的各种功能的过程。 示例窗体 图 1 显示了示例窗体的界面。它包含一个用于输入 Google 许可证密钥的文本框(请参阅附加说明:如何获取 Google Web API 工具包和许可证密钥)以及三个用于测试三种 Google 功能的区域。在第一个区域中输入搜索文本,将返回结果的数目。在第二个区域中输入 Web 站点,将返回 Google 缓存中页面的大小。在第三个区域中调用 Google 拼写检查功能,将返回经过检查的值。 图 1:运行的窗体 过程 了解窗体的功能后,让我们看一下对窗体进行编码的步骤。主要包括四个步骤: 引用 Web 服务 创建执行搜索的功能 创建检查缓存大小的功能 创建调用拼写检查的功能 <>引用 Google Web 服务 引用 Google Web 服务的步骤如下: 创建新的 Windows 窗体项目。 右键单击该项目。 选择 Add Web Reference。 注Add Web Reference 选项与 Visual Basic 6 中的 Add Reference 类似,不同之处在于,现在您可以访问位于不同网络上的 XML Web 服务,而不是访问 COM 组件的所有方法。优点在于,这种访问的类型是确定的,而且可以像触发任何本地对象一样触发智能感知。 在 Address 文本框中,键入 Web 服务说明的位置 (http://api.google.com/GoogleSearch.wsdl)。 单击 Add Reference 按钮以导入 Web 服务定义。 导入定义后,转到解决方案资源管理器,然后打开树上的 Web References 节点。 右键单击 Google 引用并选择 Rename,重命名该引用。 拖动上面显示的窗体。 为每个按钮添加代码。双击每个按钮(与在 Visual Basic 6 中一样),即可访问触发单击事件时所运行的方法。让我们依次看看各个按钮。 执行 Google 搜索 查看列表 1 中 btnSearch_Click 方法的代码,我们可以看到创建了一个新的 GoogleSearchService 对象。在下一行中,创建了一个新的 GoogleSearchResult 对象,并且使用了在一行中声明和创建对象的 Visual Basic .NET 新功能。在 Visual Basic .NET 中,以下两段代码是等效的: Dim x As String = "Hello" 和 Dim x As String x = "Hello" 创建 result 对象(通过向搜索对象传递 Google 许可证密钥、搜索文本和其他参数进行创建)后,使用 estimatedTotalResultsCount 属性填写标签。在四行代码中,调用了 Web 范围内的一个过程,执行了一个 Google 搜索,并发送了结果的数目。 本示例简单说明了如何使用搜索服务。有关搜索请求的参数和返回数据的详细信息,请参阅 Google 的参考文档。 Create a Google Search object. Dim s As New Google.GoogleSearchService() Invoke the search method. Dim r As Google.GoogleSearchResult = s.doGoogleSearch(txtLicenseKey.Text, txtSearchTerm.Text, 0, 1, _ False, "", False, "", "", "") Extract the estimated number of results for the search and display it Dim estResults As Integer = r.estimatedTotalResultsCount lblSearchResults.Text = CStr(estResults) 列表 1 — btnSearch_Click 方法 获取 Web 页的大小 如列表 2 所示,获取 Google 服务器上缓存的 Web 页的大小很容易。这里调用了 doGetCachedPage 方法,并将其赋给字节数组,然后由数组提供其长度。 Create a Google Search object Dim s As New Google.GoogleSearchService() Invoke the doGetCachedPage method and get the cached bytes Dim bytes() As System.Byte = _ s.doGetCachedPage(txtLicenseKey.Text, txtCachePage.Text) Display the length of the cached page lblCacheResults.Text = CStr(bytes.Length) 列表 2 — btnCache_Click 方法 执行拼写检查 最后一种 Google 方法调用 Google 引擎的拼写检查功能。调用了 GoogleSearchService 对象上的 doSpellingSuggestion 方法,如果得到了结果,我们就简单地显示这些结果。 Create a Google Search object Dim s As New Google.GoogleSearchService() Ask for spelling suggestion Dim suggestion As String = _ s.doSpellingSuggestion(txtLicenseKey.Text, txtSpell.Text) Display the suggestion, if any If suggestion Is Nothing Then lblSpellResults.Text = "" Else lblSpellResults.Text = suggestion End If 列表 3 — btnSpell_Click 方法 有关异常处理的一点说明 下载的代码将每个函数都包装到 Try……Catch 块中(参见列表 4)。使用此块可以捕获从 SOAP Web 服务中返回的任何错误,并在��息框中显示这些错误。最常见的错误通常会在忘记输入许可证密钥时出现。要获取许可证密钥,请参阅如何获取工具包和许可证密钥。 Create a Google Search object Dim s As New Google.GoogleSearchService() Try Invoke the doGetCachedPage method and get the cached bytes Dim bytes() As System.Byte = _ s.doGetCachedPage(txtLicenseKey.Text, txtCachePage.Text) Display the length of the cached page lblCacheResults.Text = CStr(bytes.Length) Catch ex As System.Web.Services.Protocols.SoapException MsgBox(ex.Message) End Try 列表 4 — 含有异常处理的 btnCache_Click 方法 小结 Visual Basic .NET 提供了一种在 Web 上访问 Web 服务的简单方法。将这种功能添加到您的“智囊”中,可以获得新的功能 — 正如添加 COM 对象和 ActiveX 控件能够为 Visual Basic 6 应用程序添加新功能一样。您还可以尝试将 Google 的拼写检查功能添加到基于 Web 的消息板中,或者尝试自动监控 Web 以获得特定问题的最新信息。要获得更多灵感,还可以搜索 Web(尝试搜索“VB Google API applications”)以查找其他 VISUAL BASIC 开发人员使用 Google Web API 开发出来的应用程序。希望大家开心! 如何获取工具包和许可证密钥 要访问 Google Web API 工具包并请求许可证密钥,请访问 http://www.google.com/apis/ 并按照其说明进行操作。您可以下载开发人员工具包并创建自己的 Google 帐户,经过电子邮件确认后,它会为您提供一个每天可以进行 1,000 次免费查询的许可证。