Android开发中网络请求的压缩 ── GZip的使用

Volley网络请求库源码改造:支持Gzip压缩数据格式实战 最直接的方式是在具体请求类中覆写方法:@Override该实现确保每次请求都会携带头。优点是粒度可控,可用于特定接口优化;缺点是需为每个请求类型重复编写,维护成本高。此外,某些认证逻辑可能依赖父类返回的安全头(如),因此务必调用以继承原有配置。在 Android 应用开发中,Volley 以其简洁的 API 和高效的异步处理机制成为早期网络通信框架的代表。 阅读详情

「转载请说明出处:http://blog.youkuaiyun.com/kepoon/article/details/7482096」

gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。

HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。

当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据。

从Http 技术细节上讲,就是 http request 头中 有 "Accept-Encoding", "gzip" ,response 中就有返回头Content-Encoding=gzip 。

我们现在从浏览器上访问玩啥网站都是gzip格式传输的。

但是我们现在android 客户端,没有用gzip 格式访问。

同样的的道理,我们可以在android 客户端 request 头中加入 "Accept-Encoding", "gzip" ,来让服务器传送gzip 数据。


具体代码如下。

private String getJsonStringFromGZIP(HttpResponse response) {
        String jsonString = null;
        try {
            InputStream is = response.getEntity().getContent();
            BufferedInputStream bis = new BufferedInputStream(is);
            bis.mark(2);
            // 取前两个字节
            byte[] header = new byte[2];
            int result = bis.read(header);
            // reset输入流到开始位置
            bis.reset();
            // 判断是否是GZIP格式
            int headerData = getShort(header);
            // Gzip 流 的前两个字节是 0x1f8b
            if (result != -1 && headerData == 0x1f8b) {
                LogUtil.d("HttpTask", " use GZIPInputStream  ");
                is = new GZIPInputStream(bis);
            } else {
                LogUtil.d("HttpTask", " not use GZIPInputStream");
                is = bis;
            }
            InputStreamReader reader = new InputStreamReader(is, "utf-8");
            char[] data = new char[100];
            int readSize;
            StringBuffer sb = new StringBuffer();
            while ((readSize = reader.read(data)) > 0) {
                sb.append(data, 0, readSize);
            }
            jsonString = sb.toString();
            bis.close();
            reader.close();
        } catch (Exception e) {
            LogUtil.e("HttpTask", e.toString(),e);
        }
 
        LogUtil.d("HttpTask", "getJsonStringFromGZIP net output : " + jsonString );
        return jsonString;
    }
 
    private int getShort(byte[] data) {
        return (int)((data[0]<<8) | data[1]&0xFF);
    }


参考 ,注意实际使用中,我发现gzip 流前两个字节是0x1e8b ,不是0x1f8b .后来检查一下code ,代码处理错误,加上第二个字节的时候需 &0xFF

0x1f8b 可参考标准 http://www.gzip.org/zlib/rfc-gzip.html#file-format

http://xmagicj.diandian.com/post/2011-08-08/3641381

Android GZip的使用-开发中网络请求的压缩实例详解 主要介绍了Android GZip的使用-开发中网络请求的压缩实例详解的相关资料,需要的朋友可以参考下 立即下载

相关推荐

Rocfall安装包&安装教程

Rocfall 第一步:下载安装包 下载路径: 链接:https://pan.baidu.com/s/1Dzvxzv67dSPRi7f7ZT9EeA 提取码:o9pl 第二部:安装 安装包解压 选择part1进行解压 点击Setup.exe启动安装 生成Serial Number 替换启动程序 安装完毕 素材来源于网络(禁止用于商业仅用于完成毕业设计和研究使用) 谢谢! ...

cym的博客 8707

gzip与HTTP & Android网络传输中gzip的使用总结

本文将介绍gzip和Http的编码关系,以及在Android中,如何正确使用gzip进行数据压缩传输。

卜大爷的博客 2万+

SpringBoot与Flowable整合:构建高效审批工作流的实战指南

本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。

qsc9012345的博客 520

Android开发--网络请求中GZip的使用

1、为什么要使用GZip? HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 2、那如何在HTTP请求中使用GZip呢? 一般来说,在HTTP连接中,并不是所有的接收者都支持GZip格式的,所以根据HTTP协

稻草人 1431

SAP SD核心流程解析:从销售订单到财务结算的实战指南

本文深入解析SAP SD模块从销售订单到财务结算的核心流程,重点剖析了销售订单中的行项目类别如何作为流程的“总开关”,决定了后续交货、开票及财务集成的走向。文章结合实战案例,详细拆解了正常销售、退货、第三方销售、寄售等典型流程的配置要点与国内化适配方案,并阐述了SD与财务模块集成的关键连接点,为顾问和用户提供了一份全面的实战指南。

weixin_29250403的博客 428

AttifyOS 3.0实战:从固件提取到物联网设备安全评估全流程解析

本文详细解析了使用AttifyOS 3.0进行物联网设备安全评估的全流程。从获取D-Link路由器固件开始,到利用其预置的Binwalk等工具完成固件提取、解包Squashfs文件系统,并深入分析Web源码进行初步安全审计。这套集成系统极大简化了环境配置,让研究人员能专注于漏洞挖掘本身,是物联网安全评估的高效工具箱。

ice55的博客 215

举例实现Android网络数据传输中的Gzip数据压缩

我们在进行网络传输数据时,经常用到json、xml等格式的数据,这些数据在传输前可以进行压缩,这时候就会涉及到一种压缩格式—Gzip。Gzip的压缩比率非常大,有的甚至能达到70%以上,可以大大减少传输内容,提高用户的传输速度,进而提高用户的体验。

newone_helloworld的博客 6108

2026华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解

华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,

KJ.JK 4720

Android的网络请求中GZip的使用

刚才去 iOS开发者 逛了逛,看到有一篇文章《客户端的gzip解压》讲解了iOS上在HTTP请求中如何使用GZip,所以也有了冲动写一下Android的HTTP请求中GZip的使用。 闲话少说,还是先来看一下为什么要使用GZip吧,HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来减少文件大小,减少文件大小有两个明显的好处,一是可以减

505

搞懂 SAPUI5 Fiori 应用的 OData 授权维护:从 IWSG、IWSV 到 S_SERVICE 的完整实践

本文探讨了SAP Fiori项目中常见的授权问题及其解决方案。文章指出,开发人员常误将OData服务访问问题归咎于前端代码或配置,而实际上多因授权默认值未正确带入角色所致。详细分析了IWSG(前端服务组元数据)和IWSV(后端业务服务)两个关键对象的作用机制,强调应通过PFCG角色的Authorization Default入口维护服务对象,而非直接修改S_SERVICE授权对象。文章还提供了前后端授权配置的具体操作步骤,并特别提醒需同时配置前端和后端授权,才能确保应用完整可用性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7314

android开发中使用GZIP压缩传输

HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML ,CSS,Javascript , Text ,它可以节省 40% 左右的流量。更为重要的是,它可以对动态生成的,包括 CGI 、 PHP , JSP , ASP , Servlet,SHTML 等输出的网页也能进行压

lidiansheng的专栏 1万+

基于单片机的按键加1数码管显示(仿真+程序)5046

1、51+Proteus8.10;2、学习计数统计、数码管显示驱动;

理论结合实践,开启你的电子学习新方案! 1326

android 网络数据压缩,Android开发中网络请求的压缩 ── GZip的使用

「转载请说明出处:http://blog.youkuaiyun.com/kepoon/article/details/7482096」gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据。从Http 技术...

weixin_40003478的博客 301

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android开发中网络请求的压缩-GZip

gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。 当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据。 从Http 技术细节上讲,就是 http request 头中 有 "Accept-Encoding", "gzip" ,re

开发简记 1432

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android gzip压缩流程,Android GZip的使用-开发中网络请求的压缩实例详解

android gzip:gzip是gnuzip的缩写,它是一个gnu自由软件的文件压缩程序。http协议上的gzip编码是一种用来改进web应用程序性能的技术。一般服务器中都安装有这个功能模块的,服务器端不需做改动。当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据。从http 技术细节上讲,就是 http request 头中 有 "accept-encoding", "g...

weixin_31510897的博客 640

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android解压缩GZIP格式的网页数据

简介: 进行安卓的软件开发就少不了和网络上的数据打交道,为了做出让用户喜爱的软件,我们需要想一切办法减少下载流量,加快下载速度。 GZIP就是现有的一种网站压缩格式,只要网站支持,我们就可以从网站上下载压缩过的数据包。 GZIP的介绍请看百度百科:http://baike.baidu.com/view/966625.htm 启用GZIP: 启用GZIP通信需要服务器和客户端双方的

icyfox_bupt的专栏 9471

Android总结之Gzip/Zip压缩

前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方式,GZIP/ZIP压缩。 首先认识一下GZIP压缩 GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理...

677

Android项目网络请求支持Brotli压缩记录

Brotli Google 官方库Brotli 是 Google 推出的一种无损压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比(如zip,gzip等),无论是压缩时间,还是压缩体积上看,它都有着更高的效率。Brotli 如此高的压缩比率,得益于其使用一个预定义的字典,该字典包含超过 13000 个来自文本和 HTML 文档的大型语料库的常用字符串,预定义的算法可以提升较小文件的压缩密度,而压缩与解压缩速度则大致不变。...

白泽的博客 2981
上一篇: 80后的北漂IT人:你的未来在哪?该做好打算了!
下一篇: 看“QQ音乐 闪屏设计”有感
fancylovejava
博客等级 码龄16年 1052粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值