1. 程式人生 > >httpClient的get請求 請求頭gzip和deflate的亂碼解決方案

httpClient的get請求 請求頭gzip和deflate的亂碼解決方案

利用httpClient下載頁面,先利用瀏覽器查詢頁面原始碼得知頁面編碼為utf-8,但生成字串後總是為亂碼,經過查詢得知,在設定httpGet引數時,設定了接受壓縮型別為Gzip,但卻沒有對其進行解壓縮。解壓後在生成字串,或者這是接受型別為空(即不壓縮,效率較低)即可。

第一種:

httpGet.setHeader("Accept-Encoding", "gzip"); //此行註釋掉即可!!

或者採用 第二種:

	/**
	 * 處理gzip,deflate返回流
	 * 
	 * @param is
	 * @return
	 * @throws IOException
	 */
	private String zipInputStream(InputStream is) throws IOException {
		GZIPInputStream gzip = new GZIPInputStream(is);
		BufferedReader in = new BufferedReader(new InputStreamReader(gzip, "UTF-8"));
		StringBuffer buffer = new StringBuffer();
		String line;
		while ((line = in.readLine()) != null)
			buffer.append(line + "\n");
		is.close();
		return buffer.toString();
	}
這種方法對 gzip或deflate流的解析。