類似于HttpClient的Java類庫 - HTTPBuilder
如果熟悉HttpClient,那么你對 HTTPBuilder就不會感到陌生,它是對前者的封裝,使之更符合Groovy的使用慣例。下面的例子摘自HTTPBuilder的文檔,它充分展示 了自己的特點:
- Builder and parser support for XML, JSON, and HTML
- Easy URI manipulation
- Streamlined client for REST interfaces
- Built-in support for GZIP and Deflate content-encoding
- Built-in support for most common authentication schemes
- Status code based response handling
- Convenience methods for GET and POST
- Compatible with Google App Engine
- AsyncHTTPBuilder for asynchronous requests
- Easily extensible API
import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.GET import static groovyx.net.http.ContentType.TEXT def http = new HTTPBuilder( 'http://www.google.com/search' ) http.request(GET,TEXT) { req -> uri.path = '/mail/help/tasks/' headers.'User-Agent' = 'Mozilla/5.0' //請求成功 response.success = { resp, reader -> assert resp.statusLine.statusCode == 200 println "My response handler got response: ${resp.statusLine}" println "Response length: ${resp.headers.'Content-Length'}" System.out << reader // print response stream } //404 response.'404' = { resp -> println 'Not found' } // 401 http.handler.'401' = { resp -> println "Access denied" } //其他錯誤,不實現則采用缺省的:拋出異常。 http.handler.failure = { resp -> println "Unexpected failure: ${resp.statusLine}" } }
無需過多的講解,上述的例子已經非常明白地說明了HTTPBuilder的基本使用。盡管如此,對于上例中的內容類型(即request括號中的 TEXT),還是有必要啰嗦幾句。HTTPBuilder支持對響應內容的自動解析,解析的方式可在請求中指定,缺省除了TEXT之外,還支持XML、 HTML和JSON。如果在請求中不指定解析方式,那么它會根據響應的內容類型選擇最合適的方式進行解析。對于每一種內容類型:
- TEXT,純文本
- XML,采用XmlSlurper解析內容
- HTML,先采用NekoHTML使HTML 規范化,之后采用XmlSlurper解析DOM
- JSON,采用JSON-lib解析內容
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!