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流的解析。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Apache HttpClient库发送GET请求并携带参数和请求头。下面是一个示例代码: ```java import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.NameValuePair; import org.apache.http.client.utils.URIBuilder; import org.apache.http.message.BasicNameValuePair; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { HttpClient httpClient = HttpClientBuilder.create().build(); try { // 构建请求参数 List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("param1", "value1")); params.add(new BasicNameValuePair("param2", "value2")); // 构建请求URI URI uri = new URIBuilder() .setScheme("http") .setHost("example.com") .setPath("/api/endpoint") .setParameters(params) .build(); // 创建GET请求 HttpGet request = new HttpGet(uri); // 添加请求头 request.addHeader("User-Agent", "Mozilla/5.0"); // 发送请求并获取响应 httpClient.execute(request); } catch (IOException | URISyntaxException e) { e.printStackTrace(); } } } ``` 在上面的示例,我们通过`URIBuilder`构建了带参数的请求URI,并使用`HttpGet`创建了GET请求。然后,我们使用`request.addHeader()`方法添加了请求头,并使用`httpClient.execute()`方法发送请求并获取响应。请注意,示例的参数和URI仅供参考,请根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值