轻松配置Apache实现HTTPS安全加密,小白也能看懂的操作指南!

Volley 深度解析与应用拓展

Volley 已经历了长时间的发布与广泛应用,相关教程遍布网络。本文将聚焦于两个值得深入探讨的要点。

本文不会过多涉及具体讲解,更多详细内容请参阅随附的相关链接资源。若您想要了解更为详尽的实现细节,可进一步探索 Github 上 dodocat/AndroidNetworkDemo 的完整代码,其展示的内容可能会比这里更加清晰。

采用 OkHttp 作为传输层实现

Volley 默认会根据 Android 系统版本采用不同的 Http 传输协议来实现。在 Android 3.0 及以上版本,Volley 使用 ApacheHttpStack 作为其传输协议;而在2.3 版本及以下,则采用 HttpURLConnection 作为传输层协议。

相较于其他实现方式,OkHttp 拥有以下显著优势:

1. 支持 SPDY 协议,能够使同一主机的所有请求共享一个 socket 连接。当 SPDY 不可用时,OkHttp 会使用连接池来减少请求延迟。

2. 支持 GZIP 压缩下载内容,且该操作对用户而言是透明的。OkHttp 还利用响应缓存来避免不必要的网络请求。

3. 当网络出现问题时,OkHttp 能够有效地恢复,并从常见的连接问题中自我恢复。若服务端拥有多个 IP 地址,当其中一个地址连接失败时,OkHttp 会智能地尝试连接其他地址,这在多数据中心服务环境中尤为实用。

选择 OkHttp 作为替代方案是一个明智之举。

实施步骤概述

1. 利用 OkHttp 创建一个新的 HurlStack,用于构建 Volley 的 requestQueue。

2. 使用新创建的 OkHttpStack 来构建 Volley 的 requestQueue。

完成以上步骤后即可实现 OkHttp 与 Volley 的整合。

启用 Https

作为一位有责任感的开发者,应当使用 Https 来保护用户数据。Android 开发者网站上关于“Security with HTTPS and SSL”的文章提供了详尽的说明。

OkHttp 本身支持 Https。在上述 OkHttpStack 的基础上直接使用即可支持 Https。若遇到服务器使用自签名的情况(关于为何使用自签名,此处不作详述),则可能面临无法正常访问的问题。

针对自签名的解决方案之一是将打包入 APK 并加入信任。这一做法的优点包括增强应用的安全性、减少对系统 trust store 的依赖,从而使得如 Charles 抓包等工具失效。这也带来了一些缺点,如部署的灵活性降低,以及变更需要更新应用程序等。

具体实施步骤(以12306自签名网站为例)

1. 从目标网站导出,并将其转换为 bks 格式。

2. 使用最新的 bcprov-jdk 工具,并输入相应的密码(如 storepass)来处理导出的文件。

3. 将处理后的 kyfw.bks 文件放置在 res/raw 文件夹下。

4. 创建 SelfSignSslOkHttpStack 类来处理自签名的验证逻辑。

5. 使用新创建的 SelfSignSslOkHttpStack 来替换原有的 Volley RequestQueue。

6. 进行测试,确认使用新 RequestQueue 发出的请求能够正常工作。