類似于HttpClient的Java類庫 - HTTPBuilder

fmms 12年前發布 | 40K 次閱讀 Java 網絡工具包

如果熟悉HttpClient,那么你對 HTTPBuilder就不會感到陌生,它是對前者的封裝,使之更符合Groovy的使用慣例。下面的例子摘自HTTPBuilder的文檔,它充分展示 了自己的特點:

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解析內容

項目主頁:http://www.baiduhome.net/lib/view/home/1326987740249

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