Gzip压缩

检测网站是否经过gzip压缩 http://tool.chinaz.com/Gzips/

Demo:点击按钮,查看打印日志判断服务器是否是进行过Gzip压缩

package com.loaderman.gzipdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.zip.GZIPInputStream;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void startConnect(View view) {
        final String url = "http://www.loaderman.cn";

        new Thread() {
            @Override
            public void run() {
                try {
                    HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
                    conn.setConnectTimeout(2000);
                    conn.setReadTimeout(2000);
                    conn.setRequestMethod("GET");
                    conn.addRequestProperty("Accept-Encoding", "gzip");//表示本地客户端支持gzip压缩
                    conn.connect();
                    int responseCode = conn.getResponseCode();
                    if (responseCode == 200) {
                        //判断服务器返回的是否是gzip
                        String encoding = conn.getContentEncoding();//获取返回内容的压缩格式
                        String result;
                        if ("gzip".equalsIgnoreCase(encoding)) {
                            //服务器返回了gzip数据
                            //进行解压
                            //将网络的输入流包装成gzip输入流
                            GZIPInputStream in = new GZIPInputStream(conn.getInputStream());
                            System.out.println("返回的是gzip格式!!!");
                            result = streamToString(in);
                        } else {
                            result = streamToString(conn.getInputStream());
                        }
                        System.out.println("返回结果:" + result);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
    public String streamToString(InputStream in) throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024 * 8];
        int len = 0;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
        out.flush();
        String result = out.toString();
        in.close();
        out.close();
        return result;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jcf.gzipdemo.MainActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="startConnect"
        android:text="开始连接网络"/>
</RelativeLayout>
原文地址:https://www.cnblogs.com/loaderman/p/6426418.html