当前课程知识点:Android应用开发基础 > 第九章 网络技术 > 9.1 网络服务概述 > 9.1 网络服务概述
本节我们介绍Android的网络服务
现在很多App里都内置了Web网页
比如说很多电商平台
淘宝 京东 聚划算等等
那么这种该如何实现呢
其实这是Android里一个叫WebView的组件实现
Android手机中内置了一个
高性能的webkit内核浏览器
在sdk被打包成WebView组件
这个组件主要应用于网页的加载
可以直接显示网页
也可以加载HTML文件
实现复杂的布局界面
下面我们介绍一个
使用WebView浏览网页的例子
我们内置了新浪的web网页
网页和普通网页一样
可以支持页面的跳转和内部访问
WebView的使用比较简单
我们看一下常用的用法
如图所示
1. WebView组件是Android的一个Web访问组件
使用findViewById对WebView控件进行初始化
2. 使用setJavaScriptEnabled
设置WebView控件支持JavaScript脚本
3. 使用setWebViewClient设置网络客户端
4. 我们使用loadUrl设置网页地址
5. 增加网络的访问权限
android.permission.INTERNET
WebView方法适合访问简单的网页
现在一般都是将HTML
放置在Tomcat服务器上
用服务器显示HTML文件
客服端获取并显示内容
说到HTTP协议
那必须要说说WWW了
WWW是环球信息网
World Wide Web的缩写
也可以简称为Web
中文名字为“万维网”
简单来说
WWW是以Internet
作为传输媒介的一个应用系统
WWW网上基本的传输单位是Web网页
WWW的工作是基于B/S模型
由Web浏览器和Web服务器构成
两者之间采用超文本传输协议
HTTP协议进行通信
HTTP协议是基于TCP/IP协议之上的协议
是Web浏览器
和Web服务器之间的应用层的协议
是通用的 无状态的面向对象的协议
我们首先普及一下网络协议的知识
数据在Internet上传输
一般通过三种协议来实现发送信息和实现
1. HTTP协议 也是在工作中最常用的
是建立在TCP/IP基础上实现的
2. FTP协议 文件传输协议
3. TCP/IP协议 它也是最底层的协议
其它的方式必须要通过它
但是想要实现这种协议必须要实现socket编程
这种方法用来上传一些比较大的文件
视频
进行断电续传的操作
下面我们看一个
使用HTTP协议访问网络的一个实例
输入网络地址www.sohu.com
如果访问成功
将网络返回的HTML文件的内容
全部显示到文本框
访问一个地址https://192.168.1.100
访问不成功后提示错误信息
下面是Http协议访问的实现框架
那么异步线程与主线程通过EventBus通讯
主视图中启动网络异步线程
自定义线程中包含了
网络请求成功和请求失败两种可能
网络请求的结果通过EventBus
将网络请求的数据发送到主视图
这种架构数据结构比较统一
但是缺点是EventBus
并不能处理复杂的网络数据
我们再来看一种升级的
Http协议访问的实例
架构
异步线程与主线程通过接口进行通讯
主视图中启动网络异步线程
同时在网络异步线程中
设置了一个回调的接口HttpListenser
HttpListenser包含两个接口
其中onSucess处理网络成功访问的消息
onFailed处理网络访问失败的消息
异步线程处理网络请求成功后通过onSucess
onFailed将网络请求的数据发送到主视图
这种架构可以处理复杂的网络数据
并且网络处理效率高
但是必须实现接口
不同的网络处理请求需要实现不同的接口
下面介绍一下HTTP协议的实现流程
1. 监听接口设计
新建一个HttpListener的监听接口
包含onSuccess和onFailed两个实现方法
2. 新建一个Http线程类
新建一个mHttpListener变量和strUrl变量
并根据两个变量生成构造函数
http协议的访问实现如下
Android目前提供两种http通信方式
HttpURLConnection和HttpClient
HttpURLConnection
用于发送或接收流式数据
因此比较适合上传/下载文件
我们使用HttpURLConnection
来实现HTTP的访问
首先我们进行网络设置
1. 新建HttpURLConnection访问对象
2. 新建BufferedReader缓存
3. 新建InputStream输入流
由于要进行文件输入输出流操作
网络请求代码需要使用try catch保护
4. 新建URL对象
5. 根据URL初始化
HttpURLConnection访问对象
6. 设置网络访问超时时间为5秒
7. 指定请求方式为GET方式
8. 设置读取数据超时时间为5秒
那么HTTP协议返回数据后的处理
如图所示
1. 获取输入流
2. 将输入流放入缓存
3. 新建字符串缓存
4. 按行读取输入流缓存
并将网络请求所有内容存入字符串缓存
5. 网络请求成功将信息提交回调接口
6. 网络请求失败将错误信息提交回调接口
主视图中实现了主界面的监听接口
由于网络请求后的数据
最后都是在主视图中显示
因此监听接口需要在主视图中实现
如图所示
1. 新建网络监听器对象
2. 初始化网络监听器对象
3. 实现onSuccess接口
由于网络访问后回调属于异步线程
需要使用runOnUiThread
子线程来完成对组件的访问
4. 将网络成功后获取数据显示到组件中
5. 实现onFailed接口
由于网络访问的回调属于异步线程
需要使用runOnUiThread完成对组件的访问
6. 将网络访问失败后的信息
获取的数据来显示到组件
网络访问后需要回收数据
如图所示
1. 关闭缓存
2. 关闭输入流
3. 关闭网络连接
最后我们在主视图中启动HTTP线程
如图所示
1. 新建HttpThread线程对象
并使用ipadress和mHttpListener
监听器对象初始化构造函数
2. 使用mHttpThread.start()方法启动线程
3. 增加网络访问权限
那么Android的网络权限为
android.permission.INTERNET
那么这就是通过Http协议来访问网络的全部内容
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统