1.实验目的
本实验介绍了使用Android手机接入互联网。通过实验,可以使读者初步掌握Android平台手机接入互联网的编程方法和步骤,并能够开发简单的互联网接入的应用程序。
2.实验设备
(1)硬件
● Android手机1个。
● PC1台。
(2)软件
● Java SE Development Kit 6u22 for Windows。
● Eclipse IDE for Java EE Developers。
● Android Development Tools 0.9.9。
3.实验原理
Android平台手机可以通过GSM、CDMA、3G网络和WiFi等无线网络接入Internet。Android平台手机主要是通过HTTP请求和发送数据到服务器端,使用HTTP请求和发送数据有两种方式,一种是Get方法;一种是Post方法。Get是用来从服务器上获得数据;而Post是用来向服务器传递数据。Get方式不安全,因为传输过程中,数据请求放在请求的URL中;而Post的所有操作对用户来说都是不可见的,因此安全性较高。另外,受URL长度的限制,Get传输的数据量较小;而Post则可以传输大量的数据。在编写程序实现上,Get方法相对来说简单一点;Post方法相对于Get方法稍显复杂。在本实验中采用Post方法。图5-1为Android通过HTTP接入网络的示意图。
图5-1 Android通过HTTP接入网络示意图
基于Linux内核的Android操作系统包含了一组非常优秀的联网功能。目前,Android平台有3种网络接口可以使用,它们分别是:标准Java接口(java.net.*)、Apache接口(org.apahce)和Android网络接口(android.net.*)。
(1)标准Java接口
java.net.*下面提供了访问HTTP服务的基本功能和接口,包括流和数据包套接字、Internet协议、常见HTTP处理。使用这些接口的基本操作主要包括:创建URL以及URLConnection/HttpURLConnection对象,设置链接参数,连接到服务器,向服务器写数据,从服务器读取数据。
下面是常见的使用java.net.*包的HTTP例子,代码清单如下:
(2)Apache接口
Android提供的Apache HttpClient是一个开源项目,弥补了标准Java接口(java.net.*)灵活性不足的缺点,功能更加完善,为客户端的HTTP编程提供了高效、最新、功能丰富的工具包支持。使用这部分接口的基本操作与java.net.*基本类似,主要包括:创建HttpClient以及GetMethod/PostMethod,HttpRequest等对象,设置连接参数,执行HTTP操作,处理服务器返回结果。
下面是使用android.net.http.*包的例子,代码清单如下:
(3)Android网络接口
android.net.*包实际上是通过对Apache中HttpClient的封装来实现的一个HTTP编程接口,同时还提供了HTTP请求队列管理以及HTTP连接池管理,以提高并发请求情况下的处理效率。除此之外,还有网络状态监视等接口、网络访问的Socket、常用的URI类以及与WiFi相关的类等。
下面是一个通过AndroidHttpClient访问服务器的简单例子,代码清单如下:
以上简单地介绍了网络访问的3种方式,但在实际开发应用中,可能会用到更加复杂的联网操作。在本实验中以第二种方式为例。首先让我们来了解使用HttpClient所用到的一些类。1)ClientConnectionManager接口。ClientConnectionManager是客户端连接管理器接口,它提供了几个抽象方法,如表5-1所示。
表5-1 ClientConnectionManager的抽象方法
2)DefaultHttpClient。DefaultHttpClient是默认的一个HTTP客户端,可以使用它创建一个HTTP连接。
3)HttpResponse。HttpResponse是一个HTTP连接响应,当执行一个HTTP连接后,就会返回一个HttpResponse,可以通过HttpResponse获得一些相应信息。请求一个HTTP连接并获得连接请求是否成功的代码如下:
本实验中采用Post方式来请求网络数据。使用Post方法首先要使用URL创建一个HttpPost对象,代码如下:
(www.xing528.com)
使用Post方式,需要使用NameValuePair来保存将要传递的参数,这里使用BasicNameValuePair来构造一个要被传递的参数params,然后通过add方法添加这个参数到NameValuePair中,代码如下:
Post方式还需要设置所使用的字符集,最后通过HttpClient来请求这个连接,返回响应并处理,代码如下:
代码编写完毕,为了使程序拥有访问网络的权限,要在AndroidManifest.xml中添加如下内容:
服务器端代码的编写,在后台服务器只需要编写一个能够接收客户端传递过来数据的Servlet就可以了。Servlet的doPost方法代码如下:
与一般的Java项目一样,src文件夹是项目的所有包及源文件,res文件夹则包含了项目中的所有资源。项目下的gen文件夹下的R.java文件是自动生成的,不需要对其进行修改。AndroidManfest.xml文件包含了该项目中所使用的Activity、Service、Receiver。程序启动时显示的第一个界面是由AndroidManifest.xml确定的。
主程序HttpActivity类继承自Activity类,重写了void onCreate(Bundle savedInstanceState)方法。在onCreate方法通过setContentView(R.layout.main)设置Activity要显示的布局文件,该方法也是程序的入口。上面介绍的使用Post方法访问Internet的代码均包含在该函数中。其代码如下:
4.实验内容
学习Android平台下基于HTTP访问互联网的原理和方法。
初步掌握Android平台下的网络编程方法,学习在Android环境下访问Internet的3种方法,并能够写出简单的网络连接程序。
5.实验步骤
1)在Eclipse下配置Android开发环境。
● 下载ADT使用本地安装,或者通过在线安装。
● 安装完毕,在Eclipse中选择Windows→Preferences→Android,选择AndroidSDK的路径。
● 如果使用模拟器调试程序,选择AndroidSDK and AVDManager,在里面新建一个AVD。
具体的配置步骤详见Android官方网站http://developer.android.com.nyud.net,也可以参考本书配套光盘中相应的文档。
2)创建Android工程。
● 选择File→New→AndroidProject。
● 使用droiddraw创建页面,当界面绘制完毕后,单击Generate,生成.xml文件,将生成的内容复制到工程下的res下的layout文件夹下的main.xml文件中,保存。
● 在src文件夹下编写Java代码。
3)编写服务器端Servlet,新建一个Servlet,命名为Receive.java。建议在Eclipse中安装MyEclipse插件,在Receive.java中编写修改doPost方法。然后将其部署到Apache Tomcat下,并启动Apache和服务器,在安装有MyEclipse的Eclipse中直接右击Receive.java文件,选择Run as→MyEclipse Server Application。
4)运行Android程序。在Eclipse中右击工程目录,选择Runas→Android Application。
5)如果服务器端在Eclipse下的Console窗口下显示“Hello Network”,则联网成功。
6.思考题
1)如何使用Get方式请求数据?
2)考虑使用另外两种方式实现网络接入。
7.补充阅读
[1]杨丰盛.Android应用开发解密[M].北京:机械工业出版社,2010.
[2]余志龙,陈昱勋,郑名杰,等,王世江,改编.Google Android SDK开发范例大全[M].2版.北京:人民邮电出版社,2010.
[3]Android开发者指南.http://www.developer.android.com.2010.
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。