類似于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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!