单元7Android的网络与通信应用程序设计ppt课件_第1页
单元7Android的网络与通信应用程序设计ppt课件_第2页
单元7Android的网络与通信应用程序设计ppt课件_第3页
单元7Android的网络与通信应用程序设计ppt课件_第4页
单元7Android的网络与通信应用程序设计ppt课件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单元7 Android的网络与通信应用程序设计,.,【教学导航】,.,【知识导读】,7.1 HTTP协议简介 我们上Internet网搜索资源时,通常先打开百度主页,然后输入查找关键查找所需资源。在浏览器的地址栏中输入百度的网址()单击【搜索】按钮,就会进入百度主页。这个访问百度的过程就是通过HTTP协议完成的,HTTP即超文本传输协议,它规定了浏览器和万维网服务器之间相互通信的规则。 当客户端在与服务器建立连接后,向服务器发送的请求,被称作HTTP请求。服务器端接收到请求后会做出响应,称为HTTP响应。手机终端访问服务器的示意图如图7-1所示,该图展示了HTTP协议的通信过程。,.,【知识导

2、读】,7.1 HTTP协议简介,图7-1手机终端访问服务器的示意图,.,【知识导读】,7.2 URL请求的类别 URL请求的类别分为两类:GET请求与POST请求。二者的区别在于: GET请求可以获取静态页面,也可以把参数放在URL字串后面进行传递。使用GET方式访问网络时URL的长度是有限制的。 POST方式用来向目的服务器发出请求,其参数不是放在URL字串里面,而是放在HTTP请求的正文内,并且POST方式对URL的长度没有限制。,.,【知识导读】,7.3 Android的线程与Hander消息机制 正确的实现线程方法是使用Thread+Handler机制,即利用Handler来实现UI线

3、程的更新。Thread线程发出Handler消息,通知更新UI。Handler根据接收的消息,处理UI更新。 1AndroidHander类及其主要方法 Handler类的主要作用主要有:在新启动的线程中发送消息,在主线程中获取和处理消息。Handler类包含如下方法用于发送、处理消息。,.,【知识导读】,7.3 Android的线程与Hander消息机制 2Handler相关的组件 Hander消息机制主要包括4个关键对象,分别是Handler、Message、MessageQueue和Looper,Handler消息处理流程简述如下:首先需要在UI线程中创建一个Looper对象,然后在子线

4、程中调用Handler的sendMessage()方法,接着这个消息会存在UI线程的MessageQueue中,通过Looper对象取出MessageQueue中的消息,最后发回Handler的handleMessage()方法中。,.,【知识导读】,7.4 使用HttpURLConnection访问网络 HttpURLConnection是java的标准类,继承自URLConnection,可用于向指定网站发送GET请求或POST请求。 HttpURLConnection连接URL的主要步骤如下: (1)创建一个URL对象 URL url = new URL(); (2)利用HttpURLC

5、onnection对象从网络中获取网页数据 HttpURLConnection conn = (HttpURLConnection) url.openConnection();,.,【知识导读】,7.4 使用HttpURLConnection访问网络 (3)设置连接超时 conn.setConnectTimeout(6*1000); (4)对响应码进行判断 if (conn.getResponseCode() != 200) /发送请求,将获取的网页以流的形式读回来 throw new RuntimeException(请求url失败);,.,【知识导读】,7.4 使用HttpURLConne

6、ction访问网络 (5)得到网络返回的输入流 InputStream is = conn.getInputStream(); (6)String result = readData(is, GBK); /文件流输入出文件用outStream.write (7)conn.disconnect();,.,【知识导读】,7.5 使用HttpClient访问网络 简单来说,HttpClient就是一个增强版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection没有提供的有些功能,HttpClient也提供

7、了,但它只是关注于如何发送请求、接收响应,以及管理HTTP连接。 Android已经成功地集成了HttpClient,这意味着开发人员可以直接在Android应用中使用Httpclient来访问提交请求、接收响应。,.,【知识导读】,7.5 使用HttpClient访问网络 使用HttpClient发送请求、接收响应很简单,只要如下几步即可。 (1)创建HttpClient对象。 (2)创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。 (3)如果需要发送请求参数,可调用HttpGet、HttpPost共同

8、的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。,.,【知识导读】,7.5 使用HttpClient访问网络 (4)调用HttpClient对象的execute(HttpUriRequest request)发送请求,执行该方法返回一个HttpResponse。 (5)调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity(

9、)方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。 (6)释放连接。无论执行方法是否成功,都必须释放连接。,.,【任务实战】,【任务7-1】获取指定城市的天气预报,编写程序通过网络请求服务器端的数据,获取并展示指定城市的天气预报。,【任务描述】,.,【实施过程】,1创建Android项目App0701 在AndroidStudio集成开发环境中创建Android项目,将该项目命名为App0701。 2完善布局文件activity_main.xml与界面设计 先将默认的相对布局方式(RelativeLayout)修改为线性布局方式(Line

10、arLayout),且将默认添加的TextView控件删除,然后添加1个水平线性布局管理器LinearLayout和1个用于显示网页的WebView控件,接着在嵌套布局LinearLayout中添加3个Button控件,将WebView控件的id属性设置为webView1,将Button控件的id属性分别设置为bj、sh、tj。,.,【实施过程】,3完善类MainActivity与实现程序功能 (1)定义类MainActivity与声明对象 类MainActivity的基本定义代码如下所示,该类继承自父类Activity,并实现了接口OnClickListener,用于添加单击事件监听器。 p

11、ublicclassMainActivityextendsActivityimplementsOnClickListener ,.,【实施过程】,3完善类MainActivity与实现程序功能 在MainActivity类定义中,首先声明1个WebView控件对象,代码如下所示。 privateWebViewwebView;/声明WebView控件的对象,.,【实施过程】,3完善类MainActivity与实现程序功能 (2)在onCreate()方法中编写代码实现程序功能 在onCreate()方法中获取布局中的所有对象,然后通过调用方法setOnClickListener()为各个Butt

12、on控件对象添加单击事件监听器。接着调用WebView控件对象的多个方法进行相关处理,首先设置该控件允许使用JavaScript,以及处理JavaScript对话框和各种请求事件,再为该控件指定要加载的天气预报信息,最后将网页内容放大3倍,其代码如表7-1所示。,.,【实施过程】,3完善类MainActivity与实现程序功能 (3)重写方法onClick()的代码实现程序功能 方法onClick()的代码如表7-2所示,其功能是为屏幕中各个按钮的单击事件设置不同的响应,实现单击各个的按钮时,传递不同的参数调用自定义方法openUrl()获取不同城市的天气预报信息。 自定义打开网页的方法ope

13、nUrl()的代码如表7-3所示,其功能是根据传入的参数不同,打开网页,获取并显示天气预报信息。,.,【实施过程】,4在AndroidManifest.xml文件中增加允许访问网络资源的权限 在AndroidManifest.xml文件输入如下所示的代码,增加允许访问网络资源的权限。 ,.,【实施过程】,5程序运行与功能测试 Android项目App0701的初始运行状态如图7-2所示,首先显示默认城市北京的天气预报信息。,图7-2Android项目App0701的初始运行状态,单击左侧各个城市按钮,将显示对应城市的天气预报信息,这里,单击【上海】按钮,将显示上海的天气预报信息,单击【天津】按

14、钮,将显示天津的天气预报信息。,.,【任务实战】,【任务7-2】实现百度在线搜索,当用户在查找输入框中输入关键字然后单击按钮时,发送GET请求到百度服务器,然后百度服务器将搜索结果返回给手机客户端并预以展示,编写程序使用HttpClient对象的GET方式实现这一功能。,【任务描述】,.,【实施过程】,1创建Android项目App0702 在AndroidStudio集成开发环境中创建Android项目,将该项目命名为App0702。 2完善布局文件activity_main.xml与界面设计 先将默认的相对布局方式(RelativeLayout)修改为线性布局方式(LinearLayout

15、),且将默认添加的TextView控件删除,然后添加1个EditText控件、1个Button控件、1个TextView和1个ProgressBar控件,并设置好各个控件的必要属性。布局文件activity_main.xml中控件对应的代码如表7-4所示。,.,【实施过程】,3完善类MainActivity与实现程序功能 (1)声明对象 在MainActivity类定义中,首先声明多个对象,代码如表7-5所示。 (2)在onCreate()方法中编写代码实现程序功能 在onCreate()方法中获取布局中的所有对象,然后通过自定义方法setListener()设置控件对象的监听器,其代码如表7

16、-6所示。,.,【实施过程】,3完善类MainActivity与实现程序功能 (3)编写代码为按钮自定义单击监听器 编写代码定义单击监听器OnClickListener,方法setListener()实现代码如表7-7所示。 (4)自定义doGet()方法 doGet()方法的代码如表7-8所示。,.,【实施过程】,4在AndroidManifest.xml文件中增加允许访问网络资源的权限 在AndroidManifest.xml文件输入如下所示的代码,增加允许访问网络资源的权限。 ,.,【实施过程】,5程序运行与功能测试 Android项目App0702的初始运行状态如图7-3所示。 单击【

17、百度搜索】按钮,显示的搜索结果如图7-4所示。这里显示的结果是HTML代码,其原因是没有对服务器返回的数据进行解析就予以显示,实际应用中要对网站返回的数据进行解析显示。,图7-3Android项目App0702的初始运行状态,.,【实施过程】,5程序运行与功能测试,图7-4“百度搜索”结果,.,【任务实战】,【任务7-3】实现浏览网络图片,编写程序使用HttpURLConnection对象的GET方式实现浏览网络图片的功能。,【任务描述】,.,【实施过程】,1创建Android项目App0703 在AndroidStudio集成开发环境中创建Android项目,将该项目命名为App0703。,

18、.,【实施过程】,2完善布局文件activity_main.xml与界面设计 先将默认的相对布局方式(RelativeLayout)修改为线性布局方式(LinearLayout),且将默认添加的TextView控件删除,然后添加1个EditText控件、1个Button控件和1个ImageView控件,将EditText控件的id属性设置为et_path、hint属性设置为请输入网络图片路径、text属性设置为,.,【实施过程】,3完善类MainActivity与实现程序功能 (1)声明对象 在MainActivity类定义中,首先声明多个对象,代码如下所示: protected static

19、 final int CHANGE_UI = 1; protected static final int ERROR = 2; private EditText etPath; private ImageView iv;,.,【实施过程】,3完善类MainActivity与实现程序功能 (2)定义Handler对象 在MainActivity类定义中定义Handler对象,创建消息处理器,其代码如表7-9所示。 (3)在onCreate()方法中编写代码实现程序功能 onCreate()方法的代码如表7-10所示,用于获取布局的EditText控件和ImageView控件。,.,【实施过程】,

20、3完善类MainActivity与实现程序功能 (4)自定义方法click 方法click()的代码如表7-11所示,该方法中创建并开启了一个新线程,用于从网络上获取指定图片文件。首先创建一个URL对象,然后通过URL对象去获取HttpURLConnection对象,并且设置请求的方法、超时时间、请示头信息,最后获取服务器返回的输入流。,.,【实施过程】,4在AndroidManifest.xml文件中增加访问网络资源的权限 在AndroidManifest.xml文件输入如下所示的代码,增加允许访问网络资源的权限。 ,.,【实施过程】,5程序运行与功能测试 Android项目App0703的

21、运行时,在文本框中输入一个网络图片的地址,例如,图7-5Android项目App0703运行时显示网络图片,.,【任务实战】,【任务7-4】实现短信发送,编写Android程序实现短信发送功能。,【任务描述】,.,【实施过程】,1创建Android项目App0704 在AndroidStudio集成开发环境中创建Android项目,将该项目命名为App0704。,.,【实施过程】,2完善布局文件activity_main.xml与界面设计 先将默认的相对布局方式(RelativeLayout)修改为线性布局方式(LinearLayout),且将默认添加的TextView控件删除,然后添加2个E

22、ditText和1个Button控件,将EditText控件的id属性分别设置为etPhone和etMessage、hint属性设置为请输入接收短信的手机号码和测试发送短信功能、text属性设置请输入短信内容,将Button控件的id属性设置为etMessage、text属性设置为发送短信。,.,【实施过程】,3完善类MainActivity与实现程序功能 (1)声明对象 在MainActivity类定义中,首先声明多个对象,代码如下所示: private EditText et1; / 声明布局中的输入电话号码的控件 private EditText etMsg;

23、/ 声明布局中的输入短信内容的控件 private Button btn1; / 声明布局中的发送短信的Button控件,.,【实施过程】,3完善类MainActivity与实现程序功能 (2)在onCreate()方法中编写代码实现程序功能 在onCreate()方法中获取布局中的所有对象,然后通过自定义方法setListener()设置控件对象的监听器,其代码如表7-12所示。 (3)编写代码为按钮自定义单击监听器 编写代码定义单击监听器OnClickListener,方法setListener()实现代码如表7-13所示。,.,【实施过程】,4在AndroidManifest.xml文件

24、中增加所需的权限 在AndroidManifest.xml文件输入如下所示的代码,增加允许访问网络资源和发送短信的权限。 ,.,【实施过程】,5程序运行与功能测试 Android项目App070的初始运行状态如图7-6所示,在电话号码输入框中输入接收短信的电话号码,在短信内容输入框输入短信内容,然后单击【发送短信】按钮,如果短信发送成功,则会显示如图7-7所示的提示信息。,图7-6Android项目App070的初始运行状态,图7-7“发送成功”的提示信息,.,【任务实战】,【任务7-5】实现电话拨打,编写Android程序通过单击按钮实现电话拨打功能。,【任务描述】,.,【实施过程】,1创建Android项目App0705 在AndroidStudio集成开发环境中创建Android项目,将该项目命名为App0705。,.,【实施过程】,2完善布局文件activity_main.xml与界面设计 先将默认的相对布局方式(RelativeLayout)修改为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论