我正在使用HttpClient 4.1下载网页。我想得到一个压缩版本:
HttpGet request = new HttpGet(url);
request.addHeader("Accept-Encoding", "gzip,deflate");
HttpResponse response = httpClient.execute(request,localContext);
HttpEntity entity = response.getEntity();
response.getFirstHeader("Content-Encoding")
显示"Content-Encoding: gzip"
但是,entity.getContentEncoding()
是null
。
如果我把:
entity = new GzipDecompressingEntity(entity);
我明白了:
java.io.IOException: Not in GZIP format
看起来结果页面是纯文本而不压缩,即使“Content-Encoding”标题显示它已被压缩。
我在几个网址(来自不同的网站)上尝试了这一点,但得到了相同的结果。
如何获得网页的压缩版本?
答案 0 :(得分:1)
如果您不希望您的API处理解压缩等普通事物,请不要使用HttpClient。
您可以使用基本的URLConnection类来获取压缩流,如以下代码所示:
public static void main(String[] args) {
try {
URL url = new URL("http://code.jquery.com/jquery-latest.js");
URLConnection con = url.openConnection();
// comment next line if you want to have something readable in your console
con.addRequestProperty("Accept-Encoding", "gzip,deflate");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String l;
while ((l=in.readLine())!=null) {
System.out.println(l);
}
} catch (Exception e) {
e.printStackTrace();
}
}