Android平台上的HTTPS编程实践指南
一、引言
随着移动互联网的快速发展,Android操作系统已成为全球最受欢迎的移动平台之一。
在Android开发中,网络安全问题日益受到关注,特别是HTTPS协议的应用。
HTTPS是一种通过SSL/TLS加密传输数据的协议,它可以确保应用程序在传输敏感信息时的安全性。
本文将介绍在Android平台上进行HTTPS编程的实践指南,帮助开发者更好地理解和应用HTTPS协议。
二、准备工作
在进行Android HTTPS编程之前,开发者需要了解以下准备工作:
1. 了解HTTPS基本原理:了解HTTPS协议的工作原理、加密方式以及SSL/TLS证书的概念。
2. 获取SSL证书:开发者需要从受信任的证书颁发机构(CA)获取SSL证书,或者创建自己的证书用于测试。
3. 配置开发环境:确保Android开发环境已经配置好,包括安装Android Studio、配置SDK等。
三、实现HTTPS连接
在Android中实现HTTPS连接,通常需要使用Java的网络编程API和第三方库(如OkHttp、Volley等)。以下是实现HTTPS连接的基本步骤:
1. 创建HttpsURLConnection对象:使用Java的HttpsURLConnection类创建一个连接对象。
2. 配置SSL参数:设置SSL相关参数,如证书验证方式、信任管理器等。
3. 发起请求:通过连接对象发起HTTPS请求,包括GET、POST等。
4. 处理响应:接收服务器响应,并处理返回的数据。
四、处理证书验证
在HTTPS连接中,证书验证是非常重要的一环。
为了保证安全性,开发者需要正确配置证书验证方式。
处理证书验证的方法包括:
1. 使用系统默认证书库:在Android开发中,可以使用系统默认的证书库进行证书验证,这样无需额外配置。
2. 自定义信任管理器:如果需要使用自定义的证书或绕过证书验证,可以通过实现自定义的信任管理器来实现。
3. 处理证书错误:在连接过程中可能会遇到证书错误,如证书过期、证书不受信任等,开发者需要处理这些错误并给出相应的提示。
五、使用第三方库简化HTTPS编程
为了简化HTTPS编程的复杂性,许多第三方库被广泛应用于Android开发中,如OkHttp、Volley等。
这些库提供了更高级别的抽象和封装,使得HTTPS请求更加简单和高效。
使用这些库可以大大减少开发者的工作量,并提高应用程序的性能和安全性。
六、优化HTTPS性能
为了提高应用程序的性能,开发者还需要关注HTTPS连接的优化。以下是一些优化HTTPS性能的方法:
1. 使用缓存:在应用程序中合理使用缓存机制,减少网络请求的次数和响应时间。
2. 压缩数据:通过服务器端的压缩功能或客户端的压缩库来压缩传输数据,减少数据传输量。
3. 连接复用:通过复用连接来减少建立连接的时间和开销,提高应用程序的性能。
4. 选择合适的加密套件:根据服务器支持的加密套件和客户端性能选择合适的加密套件,以提高加密和解密的速度。
七、安全性考虑
在进行Android HTTPS编程时,开发者还需要关注以下安全性问题:
1. 防止中间人攻击:确保使用受信任的证书颁发机构颁发的SSL证书,避免中间人攻击。
2. 防止恶意软件篡改:保护应用程序免受恶意软件的篡改,确保HTTPS连接的安全性。
3. 定期更新和维护:定期更新和维护应用程序的HTTPS相关代码和配置,以确保其安全性和稳定性。
八、总结
本文介绍了Android平台上HTTPS编程的实践指南,包括准备工作、实现HTTPS连接、处理证书验证、使用第三方库简化编程、优化性能和安全性考虑等方面。
通过遵循这些指南,开发者可以更好地理解和应用HTTPS协议,提高Android应用程序的安全性和性能。
Android5.0系统访问https要怎么做
需要部署SSL证书吧,部署了SSL证书的网站才可以https访问的,包括一些系统,平台,app等要https访问都需要ssl证书,可以去CA等机构申请SSL。
学习Android 开发,有什么书籍值得推荐
推荐十本Android开发畅销书籍:《Android基础教程》本书是一部关于 android开发的基础教程,采用由浅入深、循序渐进的方式讨论android。
书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者的阅读。
. 本书内容完整丰富,具有较强的通用性,读者都能通过本书快速学习 android开发,提高相关技能。
《Android应用开发揭秘》(累计印刷6次,内容已更新至Android 2.2,版权输出至台湾)这是一本参考手册,内容的完整性和系统性几乎无可挑剔,可作为广大Android开发者的案头必备书;这是一部权威指南,基础知识部分翔实而丰富,高级知识部分深入且饱含最佳实践,能从本质上提升开发者对Android的理解和开发水平。
尤为值得一提的是,Android 2.0中新增了大量激动人心的新特性,不仅支持多点触摸设备、软键盘,而且还支持多账户在线管理、蓝牙……作为国内第一本基于Android 2.0的著作,本书可谓极具前瞻性,第一时间将这些新特性完美地呈现给了广大读者。
《Google Android SDK开发范例大全》(09年度畅销榜NO.10)(台湾天珑书局09年超级畅销书)本书以android手机应用程序开发为主题,通过130多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。
. 全书共分10章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、使用android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及整合android与aoogle强大的网络服务等内容,随书光盘中包括了所有范例的程序代码。
《Google Android SDK开发范例大全(第2版)》 本书在上一版的基础上,以android手机应用程序开发(采用android sdk 2.1)为主题,通过160多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。
全书共分10章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、使用android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及整合android与aoogle强大的网络服务等内容。
随书光盘中包括了所有范例的程序代码。
本书讲述由浅入深,由android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合android的初学者和android的进阶程序开发者阅读参考。
《Android/OPhone开发完全讲义》(此书版权已经输出到台湾)推荐这本书有两个原因:一是移动开发的广阔前景,使得越来越多的企业、开发者投入其中。
相比iPhone而言,Android平台的开放性以及国内市场的广阔性,使得它更有代表性;二是作者李宁,他写作的理论性和实践性兼备,以及对技术的孜孜追求,使得这本书在Android开发的实战方面很具代表性。
也希望读者朋友和我一样能从这本书中获益。
《Android系统原理及开发要点详解》 本书全面介绍开放的移动电话平台android系统,包括android系统中的linux驱动、本地框架、java框架和java应用4个层次。
本书内容以知识性内容为纲,重点关注开发要点,各个部分内容注重相互照应,按照清晰的思路向读者介绍整个android系统的原理和开发方法。
本书按照android系统的框架和各个子系统的主线,重点介绍开发android应用程序和构建硬件抽象层。
其内容涵盖了android应用程序开发和android系统移植构建手机系统两大方面。
本书既适合从事android各个层次开发的工程师阅读,也适合通用嵌入式linux系统的学习者使用。
《深入浅出Google Android》(示例生动丰富,理论和实践完美结合)本书是国内最早的android开发团队的集体智慧结晶,真正完全基于android最新的sdk 1.5,内容详实,示例生动丰富,包含大量示例代码,可操作性强。
它不仅涵盖了android平台从基础概念到高级应用的所有主题,而且深入浅出地介绍了几种常见的android项目,具有很强的参考价值。
特别是在本书的第10、11章重点介绍了android sdk 1.5引入的最为重要的三个特性,即桌面部件、实时文件夹、虚拟键盘与输入法应用的开发方法。
.. 通过本书,读者可以迅速掌握android平台来构建应用程序,成为android开发高手,跻身新技术的弄潮儿。
《Google Android开发入门与实战》(09年度畅销榜TOP50)(附赠400分钟高清教学视频,涵盖5大商业案例完整源代码)本书内容上涵盖了用android开发的大部分场景,从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面。
从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,分别是rss阅读器、基于google map的个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。
本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的活泼形式呈现给读者。
在程序实例的讲解方面,主要将实例安插在android开发的精髓知识章节,这为初学者学习与实践结合提供了很好的指导。
. 本书配套有400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。
《精通Android游戏开发》(将本地PC游戏轻松移植到Android的秘技) 本书讨论如何将pc 上的3d 游戏移植到android 平台。
作者从必备的技能和软件工具入手,逐步介绍如何从头构建纯java 游戏,如何混合使用opengl 3d 图形和jni,并以真实的pc游戏wolfenstein 3d和doom为例,介绍如何融合java 的优雅设计和c 的强大功能,使混合游戏达到最佳性能。
本书适合熟悉android 平台的开发人员阅读。
《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》本书的主旨为,以开心网为例实现web版和android版的sns应用。
本书分为四篇,前三篇主要实现了web版的开心网系统。
其中重点介绍了ext js技术,包括ext js的核心组件、对话框、表单组件、布局、数据校验、表格、菜单、树组件等技术。
本书的最后一篇实现了android版的开心网,并介绍了与android版开心网相关的技术,包括button、textview、edittext、imageview、gridview等android组件。
本书适于以下几类人群:了解传统的web应用程序的开发,希望使用ext js开发web程序的开发人员;了解基本的ext js程序的开发方法,想增加实践经验的开发人员;对ext js感兴趣,想进一步提高ext js开发技能的读者;对android感兴趣,想从事android开发的读者;想开发基于android客户端的c/s程序,但对开发流程不了解的读者。
为什么抓包工具抓不到android的http请求
从网络上面搜索到的资料看,要抓取手机中app的网络包有下面几种方式:(1).将tcpdump移植到android平台,然后在命令行下启动tcpdump进行抓包。
tcpdump程序实际上可以看作是wireshark的命令行版本,将该程序移植到android平台直接抓包,这是一种最直接的抓包方式,然后将抓获的数据包文件,从手机传到windows系统上用wireshark打开进行分析,这种方式貌似不能用于苹果手机。
(2).使用fiddler,在windows系统上打开fiddler软件,该软件会将我们的电脑变成一个代理,然后在手机上设置wifi网络,将代理指定为开启fiddler的那台电脑,并且端口设置为fiddler侦听的8888端口,这时候使用手机访问的数据,就会通过该代理,在fiddler中就可以看到http的数据包。
这种方法我试了半天怎么都看不到数据包,不知道哪里出问题了,根据原理,这种方式支持可以通过代理访问网络的手机。
所以从原理上说是支持android和苹果手机的。
(3).通过各种方式在pc电脑上建立wifi热点,然后使用wireshark在pc电脑上监视该wifi热点,通过手机连接该热点访问网络。
这样wireshark会获取所有流经该热点的数据包这种方式适用于所有能够无线访问的手机,也就是说所有的android和苹果手机。
那么如何在pc电脑上建立wifi热点呢,有这么几种办法:(1)7电脑经过设置,可以将无线网卡设置为wifi热点,这种方法我以前用过,可以成功,但是步骤繁琐,而且不一定能够成功,其他的windows系统估计就没戏了。
(2).使用软件自动建立wifi热点,不需要自己手工配置,这样的软件有connectify hotspot,猎豹免费wifi,360免费wifi软件,这几个软件我都使用过,比较好用,这种方式同样也只能针对有无线网卡的笔记本电脑,原理也是将笔记本电脑上的无线网卡建立热点了,只不过是软件自动的,不需要人工设置,比方法1要方便。
注意:经过实验发现,手机连接这种方式建立的热点,所发送的数据,用wireshark去抓包,需要捕获电脑上本身联网的那个“网络连接”,例如我的笔记本上面有一个“本地连接”,该连接是使用有线网络的。
我用猎豹免费wifi软件建立一个热点之后,我的电脑上多出一个“无线网络连接3”,可以看到该“无线网络连接3”是猎豹生成的,但是我抓包的时候,wireshark需要捕获“本地连接”上的包,也就是我的手机访问的数据实际上还是使用的“本地连接”,通信ip也是“本地连接”上的ip地址,而在手机的wifi连接设置中看到的ip地址,在我抓的包中也搜不到,也就是说手机通过该热点访问网络,实际上还是使用的“本地连接”的ip地址,至于是什么原理,我目前也不太清楚。
但是下面要说的随身wifi硬件则与此不同,随身wifi是建立了网卡。
(3).使用随身wifi硬件。
这种也是很方便的方法,而且比较稳定,对笔记本电脑和台式机都可以使用。
我之前买了一个360的随身wifi(不是打广告,本人对360公司不感冒,但是他的随身wifi做的确实还可以,同事中有买小米wifi的,不太稳定)。
只要在360的官网上下载驱动,直接插上随身wifi就可以使用,我推荐使用这种方法。
如果你用的是笔记本电脑可以使用方法2,如果是台式机器可以使用方法3。