httpClient的get請求 請求頭gzip和deflate的亂碼解決方案
阿新 • • 發佈:2018-12-29
利用httpClient下載頁面,先利用瀏覽器查詢頁面原始碼得知頁面編碼為utf-8,但生成字串後總是為亂碼,經過查詢得知,在設定httpGet引數時,設定了接受壓縮型別為Gzip,但卻沒有對其進行解壓縮。解壓後在生成字串,或者這是接受型別為空(即不壓縮,效率較低)即可。
第一種:
httpGet.setHeader("Accept-Encoding", "gzip"); //此行註釋掉即可!!
或者採用 第二種:
這種方法對 gzip或deflate流的解析。/** * 處理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(); }