使用Groovy访问豆瓣API

今天心血来潮突然想试试用groovy访问一个OpenAPI,思考n纳秒后,决定拿豆瓣API来练练.

根据豆瓣API文档 http://www.douban.com/service/apidoc/reference/ 上的描述,表明可以通过简单的HTTP GET请求搜索豆瓣上的图书信息. 查询通过 tag,start-index,max-results三个参数分别传递 标签名称,返回结果的开始索引和返回的最大结果数来获取以ATOM或Json的形式返回的结果集,现在我只要求返回ATOM的结果就行了,那么 要获取一个查找图书的结果,需要发出这样的 HTTP GET请求:http://api.douban.com/book/subjects?tag=tagname&start-index=startindex&max-results=maxresult

好,现在就用一段简单的groovy代码来实现吧,

创建一个名为 doubanBooksSeachCli.groovy的文件

if(args){ 
    tagname=args[0]
    startindex=args[1]
    maxresult=args[2]
    addr="http://api.douban.com/book/subjects?tag=${tagname}&start-index=${startindex}&max-results=${maxresult}"
    feed=new XmlSlurper().parse(addr)
    feed.entry.each{ 
        println it.title
        println it.author.name
        println '-'*30
    }
}else{ 
    println 'USGAE: groovy douban books search cli'
}

使用Groovy 的 XmlSlurper 工具类可以很方便的操作XML数据,运用groovy的元编程能力,也可以使用obj.attribute的方式操作XML的标签.

然后,在命令行下输入 >groovy doubanBooksSeachCli.groovy groovy 1 10

查找标签名称为 groovy, 开始索引为1,最大返回结果为10的所有图书的标题和作者,返回结果如下:

Groovy in Action
Dierk KoenigAndrew GloverPaul KingGuillaume LaforgeJon Skeet
------------------------------
Grails入门指南
【美】Jason Rudolph
------------------------------
Groovy入门经典
( 英)巴克莱(Barclay,K.)(英)萨维奇(Savage,J.)
------------------------------
Groovy Recipes
Scott Davis
------------------------------
Grails in Action
Glen SmithPeter Ledbrook
------------------------------
Grails权威指南
(美)瑞切(Rocher,G.K.)
------------------------------
Groovy and Grails Recipes
Bashar Abdul Jawad
------------------------------
The Definitive Guide to Grails (Definitive Guide)
Graeme Rocher
------------------------------
Programming Groovy
Venkat Subramaniam
------------------------------
Beginning Groovy and Grails
Christopher M. JuddJoseph Faisal NusairatJim Shingler
------------------------------

这段脚本只用了几行代码就完成了我的心血来潮, 现在再看看过去写的java代码,我想我还是宁愿用groovy替代它吧..

posted @ 2010-04-17 01:07  落木萧萧  阅读(600)  评论(0)    收藏  举报