首页 理论教育 物联网实验教程:Android系统下互联网接入实验成果

物联网实验教程:Android系统下互联网接入实验成果

时间:2023-10-21 理论教育 版权反馈
【摘要】:通过实验,可以使读者初步掌握Android平台手机接入互联网的编程方法和步骤,并能够开发简单的互联网接入的应用程序。图5-1为Android通过HTTP接入网络的示意图。图5-1 Android通过HTTP接入网络示意图基于Linux内核的Android操作系统包含了一组非常优秀的联网功能。程序启动时显示的第一个界面是由AndroidManifest.xml确定的。

物联网实验教程:Android系统下互联网接入实验成果

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接入网络的示意图

978-7-111-34147-5-Chapter05-1.jpg

图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例子,代码清单如下:

978-7-111-34147-5-Chapter05-2.jpg

(2)Apache接口

Android提供的Apache HttpClient是一个开源项目,弥补了标准Java接口(java.net.*)灵活性不足的缺点,功能更加完善,为客户端的HTTP编程提供了高效、最新、功能丰富的工具包支持。使用这部分接口的基本操作与java.net.*基本类似,主要包括:创建HttpClient以及GetMethod/PostMethod,HttpRequest等对象,设置连接参数,执行HTTP操作,处理服务器返回结果。

下面是使用android.net.http.*包的例子,代码清单如下:

978-7-111-34147-5-Chapter05-3.jpg

(3)Android网络接口

android.net.*包实际上是通过对Apache中HttpClient的封装来实现的一个HTTP编程接口,同时还提供了HTTP请求队列管理以及HTTP连接池管理,以提高并发请求情况下的处理效率。除此之外,还有网络状态监视等接口、网络访问的Socket、常用的URI类以及与WiFi相关的类等。

下面是一个通过AndroidHttpClient访问服务器的简单例子,代码清单如下:

978-7-111-34147-5-Chapter05-4.jpg

以上简单地介绍了网络访问的3种方式,但在实际开发应用中,可能会用到更加复杂的联网操作。在本实验中以第二种方式为例。首先让我们来了解使用HttpClient所用到的一些类。1)ClientConnectionManager接口。ClientConnectionManager是客户端连接管理器接口,它提供了几个抽象方法,如表5-1所示。

表5-1 ClientConnectionManager的抽象方法

978-7-111-34147-5-Chapter05-5.jpg

2)DefaultHttpClient。DefaultHttpClient是默认的一个HTTP客户端,可以使用它创建一个HTTP连接。

978-7-111-34147-5-Chapter05-6.jpg

3)HttpResponse。HttpResponse是一个HTTP连接响应,当执行一个HTTP连接后,就会返回一个HttpResponse,可以通过HttpResponse获得一些相应信息。请求一个HTTP连接并获得连接请求是否成功的代码如下:

978-7-111-34147-5-Chapter05-7.jpg

本实验中采用Post方式来请求网络数据。使用Post方法首先要使用URL创建一个HttpPost对象,代码如下:

978-7-111-34147-5-Chapter05-8.jpg(www.xing528.com)

使用Post方式,需要使用NameValuePair来保存将要传递的参数,这里使用BasicNameValuePair来构造一个要被传递的参数params,然后通过add方法添加这个参数到NameValuePair中,代码如下:

978-7-111-34147-5-Chapter05-9.jpg

Post方式还需要设置所使用的字符集,最后通过HttpClient来请求这个连接,返回响应并处理,代码如下:

978-7-111-34147-5-Chapter05-10.jpg

代码编写完毕,为了使程序拥有访问网络的权限,要在AndroidManifest.xml中添加如下内容:

978-7-111-34147-5-Chapter05-11.jpg

服务器端代码的编写,在后台服务器只需要编写一个能够接收客户端传递过来数据的Servlet就可以了。Servlet的doPost方法代码如下:

978-7-111-34147-5-Chapter05-12.jpg

与一般的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的代码均包含在该函数中。其代码如下:

978-7-111-34147-5-Chapter05-13.jpg

978-7-111-34147-5-Chapter05-14.jpg

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.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈