获取压缩版网页

时间:2012-05-29 03:42:38

标签: java html httpclient

我正在使用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”标题显示它已被压缩。

我在几个网址(来自不同的网站)上尝试了这一点,但得到了相同的结果。

如何获得网页的压缩版本?

1 个答案:

答案 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();
    }
}