内容正文:
第13章 使用网络
Android Studio 移动应用开发基础(第 2 版)
目录
13.1 使用 ConnectivityManager 管理网络状态
13.2 使用 HttpURLConnection 访问网络
13.3 同步练习一
13.4 使用 OkHttp 访问网络
13.5 OkHttp GET 实现案例
13.6 OkHttp POST 实现案例
13.7 同步练习二
13.8 使用 Multipart 传递请求数据到服务器端
13.9 同步练习三
13.10 使用 JSON 格式的数据与服务器端通信
13.1 使用 ConnectivityManager 管理网络状态
在使用网络进行数据通信前,需要获取网络的状态。例如,当前网络是否开启,网络连接方式是哪种(Wi-Fi 连接、GPRS 连接、UMTS 连接),等等;
使用 Android SDK 提供的ConnectivityManager 类可以获取网络的状态;
举例说明 ConnectivityManager 类的使用方法。首先检查当前是否有活动的网络,如果有,则打印该活动网络的相关信息。该案例应用程序的运行效果如图。
新建一个名为 Ch1301 的 Android 应用程序工程。修改布局文件 res/layout/activity_main.xml:
修改 MainActivity.java 文件:
还需要在 AndroidManifest.xml 文件中添加以下代码:
13.2 使用 HttpURLConnection 访问网络
使用 HttpURLConnection 访问网络是与服务器端进行基于 HTTP 通信的直接方式。使用HttpURLConnection 与后台进行通信的过程如下:
(1)使用 URL.openConnection()方法获取一个 HttpURLConnection 对象。
(2)设置请求头的相关参数。
(3)在使用 POST 方法的请求中调用 setDoOutput(true)方法,并且使用 getOutputStream()方法获取输出
流,进而利用该输出流输出数据。
(4)处理响应数据。
(5)使用 disconnect()方法关闭网络连接。
HttpURLConnection 支持 HTTP 中规定的所有请求方法,基于上面介绍的过程,可以使用GET、POST、HEAD、OPTION、DELETE、TRACE 方法向服务器端发送请求,其中,常用的是 GET 方法和 POST 方法,
为了便于观察 Android 与服务器端进行通信的过程,编写一个服务器端程序,使用 Servlet处理来自客户端的 HTTP 请求(GET 请求和 POST 请求)。该服务器端程序主要用于完成如下任务:接收来自客户端的 HTTP 请求,并且根据请求参数 type 和 id 向请求客户端发送指定的图片数据。具体来说就是,客户端使用 GET 方法或 POST 方法向服务器端发送请求,其中的type 参数表示请求的图片类型,type=1 表示请求蝴蝶图片,type=2 表示请求卡通图片;id 参数表示请求的图片编号。
Servlet 的代码如下:
13.2.1 使用 HttpURLConnection 的 GET 方法获取图片
使用 HttpURLConnection 的 GET 方法获取服务器端的图片,并且将其显示在手机屏幕上,该案例应用程序的运行效果如图 所示。点击 4 个按钮中的任意一个,会在手机屏幕上显示相应的图片。例如,点击“显示第一张卡通”按钮,显示的界面如图 所示。
新建一个名为 Ch1302 的 Android 应用程序工程。修改布局文件 res/layout/activity_main.xml:
res/values/strings.xml 文件:
修改 MainActivity.java 文件:
还需要在 AndroidManifest.xml 文件:
Q & A
$