4

以下に示すコードを使用して、Gzipがオンになっているサーバーからデータを取得しています。私のコードはすでにGzipをサポートしていますか(おそらくこれは私のJavaプログラムではなくAndroidによってすでに行われています)、またはsmthを追加/変更する必要がありますか?Gzipを使用していることを確認するにはどうすればよいですか?私の意見では、ダウンロードは少し遅いです。

private static InputStream OpenHttpConnection(String urlString) throws IOException {
        InputStream in = null;
        int response = -1;

        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();

        if (!(conn instanceof HttpURLConnection))
          throw new IOException("Not an HTTP connection");

        try {
          HttpURLConnection httpConn = (HttpURLConnection) conn;
          httpConn.setAllowUserInteraction(false);
          httpConn.setInstanceFollowRedirects(true);
          httpConn.setRequestMethod("GET");
          httpConn.connect();

          response = httpConn.getResponseCode();
          if (response == HttpURLConnection.HTTP_OK) {
            in = httpConn.getInputStream();
            if(in == null)
              throw new IOException("No data");
          }
        } catch (Exception ex) {
          throw new IOException("Error connecting");
        }
        return in;
      }
4

2 に答える 2

8

最新の http lib はすべて Gzip 圧縮をサポートしており、これは長年の標準の一部です。

ただし、ヘッダーを送信する必要がある場合があります: "Accept-Encoding: gzip"

LANまたはサーバーでスニファーを使用して、実際に機能するかどうかを確認できます。応答ヘッダーを確認することもできますが、コードの変更が必要になります (ほとんどの場合、Web サーバーで gzip をオンにする必要があります)。

また、スペースの 10Mb ファイルをダウンロードすることもできます。gzip を使用すると、非常に高速になります :-)

于 2010-09-06T12:57:48.870 に答える
0

HttpURLConnection クラスを使用して HTTP プロトコルを操作すると、「Accept-Encoding: gzip」フィールドが送信要求に自動的に追加され、対応する応答が処理されます。(ドキュメントを参照)

于 2012-11-01T10:59:05.050 に答える