随笔 - 251  文章 - 504  trackbacks - 0
<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

本博客系个人收集材料及学习记录之用,各类“大侠”勿扰!

留言簿(14)

随笔分类

收藏夹

My Favorite Web Sites

名Bloger

非著名Bloger

搜索

  •  

积分与排名

  • 积分 - 200152
  • 排名 - 285

最新评论

我曾经介绍过“使用Axis开发Web Service程序”的一些步骤,做为一个更有特色的应用范例,本次我将介绍使用Axis通过Web Service调用Google SOAP Search API,实现Google搜索、Google快照、Google拼写这三项功能,包括示例源代码。   一、环境配置   首先,没有Java开发环境的,需要安装一下环境,点这里查看《Java开发环境的详细配置方法》,其实,本示例安装JDK 1.42以及Eclipse 3.2就可以了。   二、将Apache Axis相关包文件放在WEB-INF\lib目录下   从Apache的主页上下载Axis包文件,复制到lib目录下。   三、申请Google SOAP Search API license key   要使用Google的服务,必须要有“license key”,如果你有Gmail帐号,点这里就可以申请license key,这个license key是一段很长的字符串,每个key可以支持每天1000次的Google搜索。   四、下载WSDL文件,生成客户端Java代码   WSDL文件的下载地址参见:http://api.google.com/GoogleSearch.wsdl   生成客户端代码的批处理文件如下: set Axis_Lib=D:\workspace\test\WEB-INF\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=D:\workspace\test\src set Package=com.google.api %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% GoogleSearch.wsdl   最后会生成下列代码文件: DirectoryCategory.java GoogleSearchBindingStub.java GoogleSearchPort_PortType.java GoogleSearchResult.java GoogleSearchService.java GoogleSearchServiceLocator.java ResultElement.java   五、编写程序,调用Google SOAP Search API   在上面那个包下,编写你自己的Java程序,就可以调用Google SOAP Search API.目前可以使用的Google服务有:网页搜索,网页快照,拼写检查这三个。   Java示例代码如下,请使用前将clientKey替换为你自己的。替换后直接运行即可得出结果。 package com.google.api; import java.rmi.RemoteException; import javax.xml.rpc.ServiceException; public class ClientGoogle { public static void main(String[] args) throws ServiceException, RemoteException { String clientKey = "kkkkkkkkkkkkkkkkkkkkkkkkkkey"; GoogleSearchServiceLocator service = new GoogleSearchServiceLocator(); GoogleSearchPort_PortType gsp = service.getGoogleSearchPort(); //Google Search API GoogleSearchResult searchResult = gsp.doGoogleSearch(clientKey, "www.williamlong.info", 0, 10, false, "", false, "", "latin1", "latin1"); System.out.println("Google Search Results:"); System.out.println("======================"); ResultElement results[] = searchResult.getResultElements(); for (int counter = 0; counter < results.length; ++counter) { ResultElement result = results[counter]; String returnResult = "('" + result.getTitle() + "','" + result.getURL() + "','" + result.getSnippet() + "')"; System.out.println("Return Result"); System.out.println(returnResult); } //Google CachedPage byte[] cachedBytes = gsp.doGetCachedPage(clientKey, "http://www.williamlong.info/"); System.out.println("Cached page:"); System.out.println("============"); String cachedString = new String(cachedBytes); System.out.println(cachedString); //Google SpellingSuggestion String suggestion = (String) gsp.doSpellingSuggestion(clientKey, "williamlong"); System.out.println(suggestion); } }   当然,你也可以不使用Apache Axis,Google自己也提供了一个API包可以做为客户端调用,下载地址参见这里。   最后声明一下,Google SOAP Search API是属于实验产品,每个license每天最多只允许搜索一千次,其许可协议注明不能使用于商业模式的网站,而对于个人研究来说,每天一千次的搜索也就足够了。   相关专业名词解释:   Web Service:是一种革命性的分布是计算技术。它使用基于XML的消息处理作为基本的数据通讯方式,消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异,使异类系统能够作为计算网络的一部分协同运行。开发人员可以使用像过去创建分布式应用程序时使用组件的方式,创建由各种来源的Web服务组合在一起的应用程序。由于Web服务是建立在一些通用协议的基础上,如HTTP(Hypertext Transfer Protocol, WWW服务程序所用的协议),SOAP(Simple Object Access Protocol,简单对象访问协议),XML,WSDL(Web Services Description Language,Web服务描述语言),UDDI(Universal Description,Discovery,and Integration,通用描述发现和集成协议)等,这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此Web服务将会有很强的生命力。   SOAP:是“Simple Object Access Protocol”的缩写,SOAP是消息传递的协议,它规定了Web Services之间是怎样传递信息的。简单的说,SOAP规定了:   1. 传递信息的格式为XML.这就使Web Services能够在任何平台上,用任何语言进行实现。   2. 远程对象方法调用的格式。规定了怎样表示被调用对象以及调用的方法名称和参数类型等。   3. 参数类型和XML格式之间的映射。这是因为,被调用的方法有时候需要传递一个复杂的参数,例如,一个Person对象。怎样用XML来表示一个对象参数,也是SOAP所定义的范围。   WSDL:是“Web Services Description Language”的缩写。WSDL是Web Services的定义语言。当实现了某种服务的时候(如:股票查询服务),为了让别的程序调用,必须告诉大家服务接口。例如:服务名称,服务所在的机器名称,监听端口号,传递参数的类型,个数和顺序,返回结果的类型等等。这样别的应用程序才能调用该服务。WSDL协议就是规定了有关Web Services描述的标准。   UDDI:是“Universal Description, Discovery,and Integration”的缩写。简单说,UDDI用于集中存放和查找WSDL描述文件,起着目录服务器的作用。   XML:(eXtensible Markup Language,可扩展标记语言)是Internet上数据表示和数据交换的新标准。它是ISO(International Organization for Standardization,国际标准化组织)的SGML(Standard for General Markup Language,通用标记语言标准)的一个简化子集。XML关注信息本身,是Web上表示结构化信息的一种标准文本格式。与传统的注重页面信息显示的HTML(Hypertext Markup Language, 超文本链接标示语言)相比,关注于内容的XML具有以下诸多优点:良好的可扩展性,语言简单有效,可自行定义标记;内容与形式的分离,主要刻画数据内容,不考虑显示效果;有严格的语法要求,便于分析统一和与数据库信息转换;便于传输,为纯文本形式,可通过Http协议直接传输,可跨越防火墙;等等。XML的出现和发展对于Internet和Intranet产生了巨大的影响。 转载自月光博客 [ http://www.williamlong.info/ ]
posted on 2007-11-22 16:32 matthew 阅读(826) 评论(1)  编辑  收藏 所属分类: Web Services and SOA

FeedBack:
# re: 通过Web Service调用Google SOAP Search API-转 2007-12-24 11:31 放水老倌
唐师兄,俺最近在看WS-Addressing。有意思的东东,你也看看:)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: