Review :: HTTPBuilder for groovy

Groovy :: HTTPBuilder module

HTTPBuilder คือ module ที่ wrapper ของ Apache HttpClient ด้วยภาษา Groovy โดย module นี้ได้แนวคิดเรื่อง request/response model มาจาก prototypejs

โดย module ตัวนี้เป็นเพียง beta version เท่านั้นเนื่องจากมีอีกหลายๆ ส่วนที่ยังไม่อ่านการทดสอบ ดังนั้น ถ้าใครคิดจะเอาไปใช้งานก็ต้องพิจารณาความเสี่ยงด้วยครับ

แต่ผมเอามา overview ให้ดูก่อน เนื่องจากผมก็เป็นคนหนึ่งที่ใช้งาน Apache HttpClient อยู่ประจำเช่นกัน พอเขียนด้วย Groovy แล้วมันจะง่ายกว่าเก่าเยอะครับ

มาดู Feature ของ HTTPBuilder ประกอบไปด้วย
- จะมี Parser ที่สนับสนุน XML, JSON และ HTML
- สนับสนุน GZIP and Deflate content-encoding
- สนับสนุน HTTP Basic, Digest, and SSL certificate authentication
- มี Status Code สำหรับ response
- สนับสนุน HTTP GET และ HTTP POST
- รองรับการขยายได้อีกมาก

ส่วน Component ที่เตรียมไว้ให้ใช้ มีส่วนสำคัญดังนี้
1. HTTPBuilder คือ class หลักของ module นี้ จะทำหน้าที่สร้างการติดต่อ หรือสร้าง request ไปยังปลายทาง และทำการ parse response ที่ตอบกลับมา

2. URIBuilder เป็น class สำหรับการจัดการ URL ที่มีความซับซ้อน ซึ่งจะถูกใช้ใน HTTPBuilder

สามารถดู API เพิ่มเติมได้ที่นี่

เริ่มต้นการใช้งาน HTTPBuilder
1. Download librrary ได้ที่นี่

2. copy *jar ที่ download มาไปไว้ที่ folder %GROOVY_HOME%/lib

3. ได้เวลา coding แล้ว
- ผมจะทำการเรียกใช้งาน Twitter Search API
- ทำการ parser xml ด้วย XmlSlurper เนื่องจากผมหาวิธีการไม่เจอ รวมทั้งไม่มีตัวอย่าง แต่ผมส่ง mail ไปถามคนสร้างแล้วครับ ได้เรื่องยังไงจะมาบอกอีกทีครับ

[sourcecode language="java"]
import groovyx.net.http.*;

def url = “http://search.twitter.com/search.atom?q=groovy”
def http = new HTTPBuilder( url )
http.request(Method.GET,ContentType.XML) {
/** Success **/
response.success = { resp, xml ->
def data =new XmlSlurper().parse( xml )
data.entry.each { println it.title }
}
/** Error **/
response.failure = { resp ->
println resp.statusLine
}
}
[/sourcecode]

ถ้าเป็น JSON จะง่ายขึ้นมาหน่อย เนื่องจากมีตัวอย่างใน web ดังนี้

[sourcecode language="java"]
import groovyx.net.http.*;

def http = new HTTPBuilder( )
http.request( ‘http://ajax.googleapis.com’, Method.GET, ContentType.JSON ) {
url.path = ‘/ajax/services/search/web’
url.query = [ v:'1.0', q: 'Calvin and Hobbes' ]

/** Success **/
response.success = { resp, json ->
println “Query response: ”
json.responseData.results.each {
println ” ${it.titleNoFormatting} : ${it.visibleUrl}”
}
}
}
[/sourcecode]

นี่ก็คือการใช้งานเบื้องต้นของ HTTPBuilder module ครับ คงต้องใช้เวลาอีกสักพักสำหรับ version เต็มๆครับ

ส่วนที่ยังติดอยู่เนื่องจากไม่มีตัวอย่างใน web เช่น การ parser ด้วย build-in parser เช่น XML, HTML เป็นต้น

ลองนำไปใช้ดูครับ ถ้าเจอ bugs สามารถแจ้งไปหาผู้สร้างได้ครับ

3 thoughts on “Review :: HTTPBuilder for groovy

  1. cblue

    เห็นตอนแรกก็เอะใจครับ ว่า programming model คล้าย ๆ เคยเห็นแถวไหน
    แบบนี้คนเคยเขียน js ฝั่ง client สามารถปรับตัวกันได้ง่ายเลยทีเดียว

    ปล. หลังปีใหม่กะว่าจะเปิด section ภาษาอังกฤษครับ
    เอาภาษาไทยไปทยอย ๆ แปลออกไปมั่ง รับเข้ามาอย่างเดียวผมว่าขาดดุล lol
    หลาย ๆ article เช่นอันนี้ผมว่ามันไปลอยอยู่ใน dzone ได้สบายครับ

  2. pphetra

    อ่านตัวอย่าง code ปุ๊บก็กระโดดจะมา comment ว่า pattern เหมือนเขียนฝั่ง javascript นี่น่า ปรากฎว่าโดนคุณ cblue ตัดหน้าไปก่อนแล้ว

  3. tue2551

    ขอรับความรู้เพิ่มด้วยคนครับ…
    …พอจะมีที่ไหนตั้งคำถามเกียวกับ Groovy, Grails แบบไทยๆ ได้บ้างครับ
    …คืออ่านภาษอังกฤษพอเข้าใจ แต่ไม่แน่ใจในบางอย่างครับ.

    คือผมใหม่กับ Java แต่อยากใช้ มาเห็น Grails แล้วสนใจมากครับ
    …แต่พื้นฐานด้าน MVC ไม่มี พอมี OOP มาบ้างจาก .Net
    …มีเรื่องสงสัยว่า Class, Propertie อยู่ใน Model
    …แล้ว Function,Behavior ต่างของ Class จะวางไว้ตรงไหนดีครับ.

Leave a Reply

Your email address will not be published. Required fields are marked *


2 − two =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">