對Java的HttpURLConnection的封裝類
用于模擬瀏覽器訪問網(wǎng)頁,抓取站點(diǎn)源文件。
HttpClient(現(xiàn)在是HttpComponents)把問題搞復(fù)雜了。其實(shí)Java內(nèi)置的HttpURLConnection很好的。HttpComponents不但復(fù)雜,而且有小問題。Java API沒有內(nèi)置HttpComponents是應(yīng)該是有考慮的,HttpURLConnection已經(jīng)可以了。
* 基于HttpURLConnection
* version 1.0.0_00,支持POST數(shù)據(jù),支持SSL,支持上傳文件。
* GET、POST方式無需設(shè)置自動(dòng)判斷。
* 代碼經(jīng)過優(yōu)化和修理。
【API簡介】
該class沒有字段。
該class的方法:
Http(String urlString, String charset); execute(); setHeader(String name, String value); setTimeOut(int ms); addPostData(String name, String value); addUploadFile(String name, String path, String rename); getInputStream(); getHeader(String key); getHeaders(); javadoc文檔 【示例】 舉一個(gè)幾乎用到所有功能的例子
附注: 為什么沒有直接返回頁面文本而是通過getInputStream()方法返回一個(gè)輸入流呢? 原因一,有些網(wǎng)站會(huì)不定次地發(fā)送壓縮格式的body,例如百度。本類不予解壓縮,因?yàn)楸绢愔回?fù)責(zé)抓取而不負(fù)責(zé)對文檔進(jìn)行解析,壓縮類型(gzip等)不確定,返回的文檔也不一定是什么文檔。可根據(jù)getHeader("Content-Encoding")的值判斷壓縮情況。 原因二,java中都是對流進(jìn)行操作,這是個(gè)標(biāo)準(zhǔn)的、默認(rèn)的接口。 |