第13.1.2讲 android网络概述
1 .概述
1.1 知识背景
(1.1.1)Android作为一个移动终端的操作系统,提供了丰富的网络连接、网络交互的软件支持、硬件支持;
(1.1.2)网络通信协议从发展至今依然是TCP/IP和以其为基础的扩展子类协议;
(1.1.3)移动终端上,目前B/S和C/S两种模式的应用都十分火爆;
1.2 常见的网络应用场景
(1.2.1)网络图片资源的浏览,例如淘宝APP上的各种商品宝贝、促销图片展示、微信和QQ上的图片分享等;
(1.2.2)网络文件的下载、上传;例如360手机助手APP在线下载安装、在线升级、地图数据包的在线更新;
(1.2.3客户端跟服务端的数据交互,例如:常见的用户登录注册、 用户账户信息修改、手机淘中的商品描述信息读取等;
(1.2.3)及时通讯,例如QQ、微信等;
(1.2.4)手机浏览器,在线浏览网站网页等;
(1.2.5)在网页中利用html5和JS技术,通过APP存取或调用手机的信息资源;例如:电子门锁、居家智能监控等;
2. 硬件层的网络载体类型
联网的前提是必需有网络和网络的硬件环境支持。移动终端中常见的网络类型: (3.1)WIFI,无线局域网,在系统服务章节,有网络管理的服系统务,其中有WIFI的系统服务;
(3.2)数据网络,即GPRS、2G、3G、4G 提供的网络连接;
(3.3)蓝牙;
(3.4)USB外置网卡;
3 .android的常用网络连接方式
(3.1)UDP协议,Android依旧支持UDP协议,不过这类应用很少见;
(3.2)实时通讯使用的SOCKET通讯协议,最原始的TCP/IP底层协议支持;优点在于资源消耗少、数据抱头附加少通讯效率高,即时效高;
(3.3)基于URL(网络资源统一定位符,注意跟URL是URI的一个子类)的连接;使用简单便捷,不过可扩展配置能力低下,多用于网络图片资源的在线异步加载;
(3.4)以URL为基础的URLConnection,作为应用和网络资源的连接,提供了头TCP/IPli连接时的简单报头属性设置;
(3.5)HTTPURLConnection,HttpURLConnection在URLConnection的基础上做了进一步改进,增加了一些用于操作HTTP资源的便捷方法;
(3.5)Apache的HttpClient,HttpClient建立在网络层协议的会话层基础上,提供了类似于session的会话机制和以及Cock机制,应用程序跟服务器后台通讯时,由于封装完善、健壮性好,被android收录集成,应用普遍;
(3.6)WebView,提供UI和网络通讯,不过只能用在网页的在线浏览;
4 .网络使用中的几个主要问题
(4.1)网络通讯时因网速、线路稳定性、超时长短等因素的的不确定性,因此网络通信不能在主线程中直接使用;
(4.2)商业级的应用中,要根据实际需要,分别设置不同的连接超时时间、读写超时时间,不建议使用默认超时时间,避免网络连接长时间的阻塞,带来子线程的不可控,尤其是主线程已经退出,网络还不能退出的局面;
(4.3)网络通信主要通过子线程实现,多子线程通信时如何保证hettpClient的安全性;
(4.4)Http协议中,缓存(cach)默认为开启,不需要缓存的应用场景时,需要关闭缓存setUseCaches(false);
(4.5)区别好字节流和字符流的使用,二进制文件只能使用字节流,文本文件可以使用字节流或字符流;
(4.6)注意字符流的编码格式,否则容易乱码;
(4.7)网络连接时,需要访问网络权限 <uses-permission android:name="android.permission.INTERNET"/>
5 .名词速查
(5.1)TCP/IP: Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成
(5.2)HTTP: 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准 。
(5.3)HTTP应用概览:客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。 ;
(5.4)HTTP协议报文结构概览: HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应应答构成。
请求报文格式:请求行 + 通用信息头 + 请求头 + 实体头 + 报文主体
应答报文格式:状态行 + 通用信息头 + 响应头 + 实体头 + 报文主体
;
(5.5)SOAP协议: 定义简单对象访问协议(Simple Object Access Protocol,SOAP),是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息
(5.6)JSON: JSON(Javascript Object Notation)是一种轻量级的数据交换语言;
(5.7)会话:所谓会话就是指客户端访问服务器时,从开始建立通信连接,到关闭浏览器期间的活动过程;HttpClient实现了验证会话机制,通过HttpClient对象可以实现Java Web开发中session相似功能;
(5.8)URL: 是uniform resource locator的简写,统一资源定位器 统一的资源定位符,其一般形式是:<URL的访问方式>://<主机>:<端口>/<路径>;
(5.9)URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源 ; URI抽象结构 [scheme:]scheme-specific-part[#fragment]