カスタム検索

2009年1月19日月曜日

httpBuilderが俺にもっと輝けと囁いている

httpBuilderという素敵なものがあったので試してみた

allをダウンロードして、target/dependenciesのjarとhttp-builder自体のjarをlibへコピっと。

Basic認証して、htmlを取得するサンプル。
取得したhtmlはxmlSlurperへ変換し操作しやすいように。


import groovyx.net.http.*
import static groovyx.net.http.Method.*
import static groovyx.net.http.ContentType.*

// basic認証用にbase64したID/Passを作成
def testBytes = "user:pass".getBytes("ISO-8859-1")
def encoded=testBytes.encodeBase64()

def http = new HTTPBuilder("http://hogehoge.jp/requiredBasicAuth")
http.headers=["Authorization":"Basic ${encoded}"]

try {
http.get(contentType:TEXT) { resp, reader ->
def page = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(reader.text)
def data = page.depthFirst()
data.each { println it }
}
} catch(Exception e) {
println "auth failure"
}


headerの調整とかpost指定とかなしで、簡単にとりたいだけだったら、上のCyberNekoのSlurperを使っている所を使うと簡単

def page = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parse("http://www.google.co.jp")
def data = page.depthFirst()
data.each { println it }

こんだけでオッケー!

getのオプションで使う query がうまく動かなかったのが気になる所・・・

0 件のコメント: