Volley 已经发布很久了, 也被广泛使用, 到处都是相关的教程. 本文只说了两个值得注意的地方.
本文讲解部分较少, 请参考提供的相关链接. 代码的完整实现 Github dodocat/AndroidNetworkDemo 可能看起来比这里更清晰.
使用 OkHttp 实现传输层.
Volley 默认根据 Android 使用不同的系统版本 Http 实现传输协议.
在 Android 3.0 以上 Volley 使用 ApacheHttpStack 作为传输协议, 在2.3 及以下使用 HttpURLConnection 作为传输层协议
OkHttp 与其他实现相比,具有以下优势.
支持SPDY,允许连接同一主机的所有请求共享一个socket。 如果SPDY不能使用连接池来减少请求延迟。 使用GZIP压缩下载内容,压缩操作对用户透明。 避免重复的网络请求。 当网络出现问题时,OKHttp它将继续有效地恢复常见的连接问题。 如果您的服务端有多个服务端IP当第一个地址连接失败时,OKHttp试着连接其他地址,这对IPV4和IPV在多个数据中心提供寄宿服务是非常必要的。
因此使用 OkHttp 作为替代品是不错的选择.
1.首先用 OkHttp 实现新的 HurlStack 用于构建 Volley 的 requestQueue.
2.然后使用 OkHttpStack 创建新的 Volley requestQueue.
这样就行了.
使用 Https
作为一个有节操的开发者,应该使用它 Https 保护用户数据, Android 开发者网站上的文章Security with HTTPS and SSL详细阐述.
OkHttp 自身是支持 Https 的. 参考文档 OkHttp Https, 直接使用上面的 OkHttpStack 就可以了, 但如果服务器开发的哥哥使用了自签证书(不要问我为什么要使用自签证), 无法正常访问.
网上有很多文章提供了一个什么都不做的计划TrustManager 跳过 SSL 的验证, 这样做很容易受到攻击, Https 也就是形同虚设.
我采用的计划是将自签证证书打包成 APK 加入信任.
好处:
应用难以逆转, 不再依赖系统的应用 trust store, 使得 Charles 抓包等工具失效. 要分析应用 API 必须反编译 APK. 不需要额外购买证书, 省钱...
缺点:
降低了证书部署的灵活性, 变更证书必须升级程序.
实现步骤
以最著名的自签网站12306为例
1.导出证书
将证书转为 bks 格式
2.下载最新的bcprov-jdk, 执行下列命令. storepass 导出密钥文件的密码.
3.将导出的 kyfw.bks 文件放入 res/raw 文件夹下.
4.创建 SelfSignSslOkHttpStack
5.然后用 SelfSignSslOkHttpStack 创建 Volley 的 RequestQueue.
6.让我们试一试, 上一步穿件 RequestQueue 替换原来的, 然后发请求试试.
7.done
注:阅读相关网站建设技能,请移动到建站教程频道。