欢迎光临
我们一直在努力

简介 Google 开放式 WebServices 查询接口-JSP教程,资料/其它

建站超值云服务器,限时71元/月

查找引擎之王 google 于 4/11 开放了它的查询接口,可以让全世界各地的 java 以及 .net 程序员,免费地以 webservices 的方式,对 google 下查找指令,并且可以将结果使用于自己的程序或网页中,并且几乎目前所有的程序语言都有 webservices 的相关软体包,本次介绍应该可以给大家一个简单的 webservices 概念 …

查找引擎之王 google 于 4/11 开放了它的查询接口,可以让全世界各地的 java 以及 .net 程序员,免费地以 webservices 的方式,对 google 下查找指令,并且可以将结果使用于自己的程序或网页中。不过使用上也有限制,它一天只允许未付费的程序员查找 1000 次。要使用前,必须先向 google 注册帐号,取得一个 32 位长度的 license key ,每次呼叫查询时,必须带入这个 license key 即可使用。因为 webservices 以 wsdl (web service definition language) 的方式描述所开放的接口,走的通讯协定是 soap on http ,所以理论上可以穿越防火墙。 java 范例程序如下∶

import java.io.*;

import com.google.soap.search.*; // 这是 googleapi.jar ,由 google 所提供

public class searchgoogle {

public static void main(string[] args) {

if (args.length != 2)

{

system.err.println("usage: java searchgoogle licensekey 查询字符串 ");

system.exit(1);

}

string clientkey = args[0];

string querystring = args[1];

system.out.println(" 查询字符串 = " + querystring);

// 产生查找对象,设定输出编码 (big5)

googlesearch s = new googlesearch();

s.setkey(clientkey);

s.setoutputencoding("big5");

try

{

s.setquerystring(qyerystring);

googlesearchresult r = s.dosearch();

system.out.println(" 查找结果 :");

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

system.out.println(r.tostring());

}

catch (googlesearchfault e)

{

system.out.println(" 查找失败 ");

}

}

}

使用方法以及查询结果(执行环境∶ linux + jdk 1.3.1_01 ,主机位于防火墙后端)∶

java -classpath .:../lib/googleapi.jar

searchgoogle xxxxxxxxx- 我的 licensekey-xxxxxxxxx linuxfab

查询字符串 = linuxfab

查找结果 :

======================

{

tm = 0.048257

q = "linuxfab"

ct = ""

tt = ""

cats =

{

{se="big5", fvn="top/world/chinese_traditional/ 计算机 /operating_systems/unix/linux"}

}

start index = 1

end index = 10

estimated total results number = 11500

document filtering = true

estimate correct = false

rs =

{

[

url = "http://bbs.ee.ntu.edu.tw/boards/linux/21/"

title = " ◆ 【 linuxfab 早报】 "

snippet = " ◆ 【 linuxfab 早报】 . … 5, ◇ 【 linuxfab 本周专栏】 如何制作简易 floppy liunx, linuxfab. 07/13/01. … "

directory category = {se="", fvn=""}

directory title = ""

summary = ""

cached size = "11k"

related information present = true

host name = ""

],

[

url = "http://bbs.ee.ntu.edu.tw/boards/linux/21/73.html"

title = " ◇ 【 linuxfab 早报】 – linux 2.4.10 内核中剽窃了 ┅ "

snippet = " ◇ 【 linuxfab 早报】 – linux 2.4.10 内核中 剽窃了 ┅ . 发信人 : linuxfab.bbs … "

directory category = {se="", fvn=""}

directory title = ""

summary = ""

cached size = "10k"

related information present = true

host name = "bbs.ee.ntu.edu.tw"

],

[

url = "http://www.lslnet.com/linux/docs/linux-3033.htm"

title = "linuxfab: red hat7.0 ? 新特色 – [? 森林 – 自由 ? 件 ]"

snippet = " … linuxfab: red hat7.0 ? 新特色 ? 森林 http://www.lslnet.com 2000 年 9 月 24 日 09:59 … 摘自∶ http:linuxfab.cx [ ?? 窗口 ]. … "

directory category = {se="", fvn=""}

directory title = ""

summary = ""

cached size = "5k"

related information present = true

host name = ""

],

下略

当然,输出结果不是这么杂乱, google 所提供的 api 有各种查找设定方法,例如从第几笔开始查找、设定传回笔数、偏好查找(避免查找 java 时传回 咖啡 的结果) … 等等,各位可以好好玩一玩。

如果您不想使用 google 的 library ,您也可以利用手边的 webservices 工具程序,自动抓取 google 所提供的 wsdl 文档(位于∶ http://api.google.com/googlesearch.wsdl ),并且产生相关的 java 对象。以下以 glue 这套 java webservices 软体包做范例∶

$ wsdl2java http://api.google.com/googlesearch.wsdl -p example -d example/

write file example/igooglesearchport.java

write file example/googlesearchservicehelper.java

write file example/resultelement.java

write file example/directorycategory.java

write file example/googlesearchresult.java

write file googlesearchservice.map

glue 的强处在于它自动为您处理所有 xml <-> java object mapping 以及 soap 传输的问题,您甚至不需要看懂 wsdl 便可直接使用 webservices !我们现在已经将 wsdl 转换成 java 对象, package 名为 example ,接下来便是撰写 client 去连接 google ∶

import java.io.*;

import electric.registry.registry; // 包含于 glue-std.jar ,为 glue 标准版的 library

import example.*; //glue 自动为您由 wsdl 产生出来的 java 对象

public class searchgoogle2 {

public static void main(string[] args) {

if (args.length != 2)

{

system.err.println("usage: java searchgoogle licensekey 查询字符串 ");

system.exit(1);

}

string clientkey = args[0];

string querystring = args[1];

system.out.println(" 查询字符串 = " + querystring );

string url = "http://api.google.com/googlesearch.wsdl";

try

{

// 利用 glue 产生的接口,去 bind google 的 wsdl

igooglesearchport searcher = (igooglesearchport) registry.bind(url , igooglesearchport.class);

// 查询

googlesearchresult result = searcher.dogooglesearch

( clientkey , querystring , 0 , 1 , false , "" , false , "" , "big5" , "big5" );

system.out.println(" 查找结果 :");

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

system.out.println(" 回应数量∶ " + result.resultelements.length );

system.out.println(" 第一笔结果∶ ");

system.out.println(" 简介∶ " + result.resultelements[0].summary );

system.out.println("url ∶ " + result.resultelements[0].url );

system.out.println(" 片段∶ " + result.resultelements[0].snippet );

system.out.println(" 标头∶ " + result.resultelements[0].title );

system.out.println(" 主机∶ " + result.resultelements[0].hostname );

system.out.println(" 目录∶ " + result.resultelements[0].directorytitle );

}

catch (electric.registry.registryexception e)

{

system.out.println(" 错误∶ " + e.getmessage());

}

}

}

执行结果指令如下∶

$ java -classpath .:../lib/glue-std.jar:../lib/j2ee.jar:../lib/jnet.jar

searchgoogle2 xxxxxxxxx- 我的 licensekey-xxxxxxxxx linuxfab

查询字符串 = linuxfab

查找结果 :

======================

回应数量∶ 1

第一笔结果∶

简介∶

url ∶ http://bbs.ee.ntu.edu.tw/boards/linux/21/

片段∶◆ 【 linuxfab 早报】 . … 5, ◇ 【 linuxfab 本周专栏】 如何制作简易 floppy liunx, linuxfab. 07/13/01. …

标头∶◆ 【 linuxfab 早报】

主机∶

目录∶

要注意的是,这只是 google beta2 版本的 wsdl ,未来接口一定会有所更动,而且远端主机 (api.google.com) 仍然不太稳定,有时候会连不过去,有时又会出现 internal server error 的错误。不过以上的介绍应该可以给大家一个简单的 webservices 概念了吧?目前几乎所有的程序语言都有 webservices 的相关软体包,不论您是 php 网页制作者,或是 vb 窗口程序员,应该都找到相关的软体包,直接在您的网页 / 程序上面撰写 webservices 的 client 以及 server 。

截稿前消息∶全球最大的网络书店 amazon ,也开始提供 webservices 接口给代销商( associates ,可以在个人网页上放置连往 amazon 的 icon 或连结,藉此赚取部分成交金额)使用。代销商现在可以利用 amazon 提供的 webservices 撰写 web/desktop 应用程序了!看来类似的 webservices 将会逐渐在许多大站点中陆续被采用,或许 linuxfab/sourcefab 可以考虑引进此技术,使本站成为华人 open source 界的网络运算中心。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 简介 Google 开放式 WebServices 查询接口-JSP教程,资料/其它
分享到: 更多 (0)

相关推荐

  • 暂无文章