通过Web Service调用Google SOAP Search API

本次我将介绍使用Axis通过Web Service调用Google SOAP Search API,实现Google搜索、Google快照、Google拼写这三项功能,包括示例源代码。

  <strong>一、环境配置</strong>

  首先,没有Java开发环境的,需要安装一下环境,其实,本示例安装JDK 1.42以及Eclipse 3.2就可以了。

  <strong>二、将Apache Axis相关包文件放在WEB-INFlib目录下</strong>

  从Apache的主页上下载Axis包文件,复制到lib目录下。

  <strong>三、申请Google SOAP Search API license key</strong>

  要使用Google的服务,必须要有“license key”,如果你有Gmail帐号,<a href=”http://api.google.com/createkey” target=”_blank”>点这里</a>就可以申请license key,这个license key是一段很长的字符串,每个key可以支持每天1000次的Google搜索。

  <strong>四、下载WSDL文件,生成客户端Java代码</strong>

  WSDL文件的下载地址参见:<a href=”http://api.google.com/GoogleSearch.wsdl” target=”_blank”>http://api.google.com/GoogleSearch.wsdl</a>

  生成客户端代码的批处理文件如下:

set Axis_Lib=D:workspace estWEB-INFlib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

set Output_Path=D:workspace estsrc

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

  <strong>五、编写程序,调用Google SOAP Search API</strong>

  在上面那个包下,编写你自己的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.fightfly.com", 0, 10, false, "", false, "", "latin1",

"latin1");

System.out.println("Google Search Results:");

System.out.println("======================");

ResultElement results[] = searchResult.getResultElements();

for (int counter = 0; counter

//Google CachedPage

byte[] cachedBytes = gsp.doGetCachedPage(clientKey,

"http://www.fightfly.com/");

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,

"700net");

System.out.println(suggestion);

}

}

  当然,你也可以不使用Apache Axis,Google自己也提供了一个API包可以做为客户端调用,下载地址参见<a href=”http://code.google.com/apis/soapsearch/download.html” target=”_blank”>这里</a>。

  最后声明一下,Google SOAP Search API是属于实验产品,每个license每天最多只允许搜索一千次,其许可协议注明不能使用于商业模式的网站,而对于个人研究来说,每天一千次的搜索也就足够了。

  相关专业名词解释:

  <strong>Web Service</strong>:是一种革命性的分布是计算技术。它使用基于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服务将会有很强的生命力。

  <strong>SOAP</strong>:是“Simple Object Access Protocol”的缩写,SOAP是消息传递的协议,它规定了Web Services之间是怎样传递信息的。简单的说,SOAP规定了:

  1. 传递信息的格式为XML.这就使Web Services能够在任何平台上,用任何语言进行实现。

  2. 远程对象方法调用的格式。规定了怎样表示被调用对象以及调用的方法名称和参数类型等。

  3. 参数类型和XML格式之间的映射。这是因为,被调用的方法有时候需要传递一个复杂的参数,例如,一个Person对象。怎样用XML来表示一个对象参数,也是SOAP所定义的范围。

  <strong>WSDL</strong>:是“Web Services Description Language”的缩写。WSDL是Web Services的定义语言。当实现了某种服务的时候(如:股票查询服务),为了让别的程序调用,必须告诉大家服务接口。例如:服务名称,服务所在的机器名称,监听端口号,传递参数的类型,个数和顺序,返回结果的类型等等。这样别的应用程序才能调用该服务。WSDL协议就是规定了有关Web Services描述的标准。

  <strong>UDDI</strong>:是“Universal Description, Discovery,and Integration”的缩写。简单说,UDDI用于集中存放和查找WSDL描述文件,起着目录服务器的作用。

  <strong>XML</strong>:(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产生了巨大的影响。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部