カスタム検索

2009年1月19日月曜日

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

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

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

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

  1. import groovyx.net.http.*  
  2. import static groovyx.net.http.Method.*  
  3. import static groovyx.net.http.ContentType.*  
  4.   
  5. // basic認証用にbase64したID/Passを作成  
  6. def testBytes = "user:pass".getBytes("ISO-8859-1")  
  7. def encoded=testBytes.encodeBase64()  
  8.   
  9. def http = new HTTPBuilder("http://hogehoge.jp/requiredBasicAuth")  
  10. http.headers=["Authorization":"Basic ${encoded}"]  
  11.   
  12. try {  
  13.   http.get(contentType:TEXT) { resp, reader ->  
  14.     def page = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(reader.text)  
  15.     def data = page.depthFirst()  
  16.     data.each { println it }  
  17.   }  
  18. catch(Exception e) {  
  19.   println "auth failure"  
  20. }  


headerの調整とかpost指定とかなしで、簡単にとりたいだけだったら、上のCyberNekoのSlurperを使っている所を使うと簡単
  1. def page = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parse("http://www.google.co.jp")  
  2. def data = page.depthFirst()  
  3. data.each { println it }  

こんだけでオッケー!

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

0 件のコメント: