安卓基础5:网络编程2

安卓基础5:网络编程2

登陆案例:

Get vs post:

安卓基础5:网络编程2

1、 写登陆界面

2、 搭建服务器环境,就是写servlet代码

3、 写安卓的业务逻辑

a)      写基本的安卓业务逻辑:找相关控件

b)     Get方式把数据提交到服务器()

c)      Post方式把数据提交到服务器

4、 加上网络访问权限

 

乱码问题的解决:

只要两边编码方式需要统一;

原因,安卓提交到tomcat,其编码格式为ios-8859-1;而安卓以本地码表编码

安卓基础5:网络编程2

Post方式不存在乱码问题;

 安卓基础5:网络编程2

基本提交方式:

代码:

tomcat服务器端的代码:

安卓基础5:网络编程2

界面:

安卓基础5:网络编程2

安卓基础5:网络编程2

事物处理层:

安卓基础5:网络编程2

Get提交:

安卓基础5:网络编程2

安卓基础5:网络编程2

Post提交:

安卓基础5:网络编程2

安卓基础5:网络编程2

方法区:

httpClient方式提交数据:

httpclient实际上也是一个开源的项目,android工程师直接封装到了API中;

该类在执行请求之后,获取相应的回传数据,这里的回传类HttpResponse里面封装了

1、回传的状态行getStatusLine 2、获取回传的数据体(通过流封装的)

Get发送

1、 初始化httpClient

2、 执行一个get请求

3、 准备get请求的参数,

4、 获取状态码和服务器返回的内容

代码:

安卓基础5:网络编程2

安卓基础5:网络编程2

Post发送

1、 初始化httpClient

2、 执行一个get请求

3、 准备post请求的参数,

4、 获取状态码和服务器返回的内容

代码

安卓基础5:网络编程2

安卓基础5:网络编程2

 

开源项目AsynchttpClient提交:

使用:

1、 创建asynchttpclient对象

2、 执行get请求

安卓基础5:网络编程2

优点,不用开子线程,不用使用handler

Get发送:

代码:

安卓基础5:网络编程2安卓基础5:网络编程2

Post发送

代码:

安卓基础5:网络编程2

安卓基础5:网络编程2

文件上传:

步骤:

1、 搭建服务器

2、 画UI界面

3、 实现上传的业务逻辑

4、 主要通过asyncHttpClient实现

代码:

服务器tomcat代码:

安卓基础5:网络编程2

安卓基础5:网络编程2

界面:

安卓基础5:网络编程2

事物处理层:

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

多线程加速下载:

注意:不是线程开的越多下载越快,其受服务器真实带宽的影响、受CPU处理速度的影响(手机迅雷:推荐2-3个)

多线程下载需要注意的东西:

1、 如何获取服务器文件大小

2、 计算每个线程下载的开始的位置和结束位置

3、 在客户端创建一个大小和服务器一模一样的文件

4、 如何开启多个线程

5、 什么时候每个线程都下载完毕

常规多线程下载步骤:

1、获取服务器文件大小

2、在客户端创建和服务器大小一模一样的文件

3、计算出每个线程下载的开始位置和结束位置

5、 在for循环中开启多个线程

a)      注意服务器返回为206:请求部分资源成功

代码

界面:

            显示界面

安卓基础5:网络编程2

安卓基础5:网络编程2

ListView模板界面:安卓基础5:网络编程2

事物处理层:

  主流程:

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

下载方法:

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2


工具类

 安卓基础5:网络编程2

 

RandomAccessFile对象对底层文件进行操作,同时可以设置文件读写位置,因此是做断点续传比较好的写工具;

实现断点续传:

1、 把当前线程下载的位置存储起来,注意:不要用FileoutputStream

2、 在每次下载的时候继续上次的位置继续下载;

3、 文件下载完成之后,把.txt文件删除

 

(与进度相关的进程都可以直接在子线程更新UI;eg:进度条progressbar和progressDialog)

这里可以添加的额外功能:

1、 判断sd卡是否存在

2、 判断sd卡空间是否足够

3、 判断网络类型

4、 判断手机是否有病毒

 

使用开源项目xutils实现下载

1、 创建httputils对象

httpUtils http = new HttpUtils();

2、 实现下载功能

3、 加入网络和写SD卡权限

代码

界面:

安卓基础5:网络编程2

事物处理层:

安卓基础5:网络编程2

安卓基础5:网络编程2

 

Jason解析:

1、 若以{}封装,通过jasonobject对象进行解析

2、 若以[]封装,通过jasonarray对象进行解析

代码:

安卓基础5:网络编程2

手机归属地查询:

代码:

界面:

安卓基础5:网络编程2

事件处理层:

安卓基础5:网络编程2

安卓基础5:网络编程2安卓基础5:网络编程2

安卓基础5:网络编程2

安卓基础5:网络编程2

流下载工具类:

安卓基础5:网络编程2


上面都是上古时代的下载方法。我们就看看大体的下载方法和处理方式就行了。