inputstream流乱码_GZIPInputstream解决乱码问题

public static String getHtmlContent(String htmlurl, String charset) {

StringBuffer sb = new StringBuffer();

String acceptEncoding = "";

/* 1.生成 HttpClinet 对象并设置参数 */

HttpClient httpClient = new HttpClient();

// 设置 Http 连接超时 5s

httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(

5000);

GetMethod method = new GetMethod(htmlurl);

// 设置 get 请求超时 5s

method.getParams()

.getDoubleParameter(HttpMethodParams.SO_TIMEOUT, 10000);

// 设置请求重试处理

method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,

new DefaultHttpMethodRetryHandler());

int statusCode;

try {

statusCode = httpClient.executeMethod(method);

// 判断访问的状态码

if (statusCode != HttpStatus.SC_OK) {

return sb.toString();

} else {

if (method.getResponseHeader("Content-Encoding") != null)

acceptEncoding = method

.getResponseHeader("Content-Encoding").getValue();

if (acceptEncoding.toLowerCase().indexOf("gzip") > -1) {

// 建立gzip解压工作流

InputStream is;

is = method.getResponseBodyAsStream();

GZIPInputStream gzin = new GZIPInputStream(is);

InputStreamReader isr = new InputStreamReader(gzin, charset); // 设置读取流的编码格式,自定义编码

java.io.BufferedReader br = new java.io.BufferedReader(isr);

String tempbf;

while ((tempbf = br.readLine()) != null) {

sb.append(tempbf);

sb.append("\r\n");

}

isr.close();

gzin.close();

System.out.println(sb);

} else {

InputStreamReader isr;

isr = new InputStreamReader(

method.getResponseBodyAsStream(), charset);

java.io.BufferedReader br = new java.io.BufferedReader(isr);

String tempbf;

while ((tempbf = br.readLine()) != null) {

sb.append(tempbf);

sb.append("\r\n");

}

isr.close();

}

}

} catch (HttpException e1) {

e1.printStackTrace();

} catch (IOException e1) {

e1.printStackTrace();

}

method.abort();

method.releaseConnection();

return sb.toString();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值