0%

第9章: 看看精彩的世界-使用网络技术

webview的用法

这节描述得比较简单,因此记住以下内容就行:

webview.setWebClient(new WebViewClient);

为webview设置webViewClient,其主要作用是当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前WebView中显示,而不是打开系统浏览器。

使用HTTP协议访问网络

介绍了HttpURLConnection 使用方法,简单上个图:

HttpURLConnection使用

OkHttp的简单使用,并不复杂,略。

解析XML格式数据

在网络上传输数据时最常用的格式有两种,XML和JSON,首先学习解析XML。

搭建简易服务器提供数据

学习解析xml和json之前,先搭建一个简易服务器提供解析的数据,按照以下步骤即可:

  1. 下载一个Apache服务器的安装包,官方下载地址http://httpd.apache.org/download.cgi

  2. 一路默认Next,域名随意填写如test.com,安装路径的话,可以选择安装在 C:\Apache 目录

  3. 为了验证安装是否成功,可以打开电脑的浏览器验证,输入 127.0.0.1 出现 It works 界面即可。

接下来进入到安装目录的htdocs目录下,按照上述安装过程应该是C:\Apache\htdocs目录,新建get_data.xml文件,编辑,并加入内容:

1
2
3
4
5
6
7
8
9
10
11
<apps>
<app>
<id>1</id>
<name>google map</name>
</app>

<app>
<id>1</id>
<name>google map</name>
</app>
</apps>

打开浏览器访问 http://127.0.0.1/get_data.xml就会显示上述内容,同理,如果在其中新建 get_data.json文件,并添加以下数据:

1
2
3
[{"id":"5","version":"5.5","name":"map"},
{"id":"6","version":"6.6","name":"boom"},
{"id":"7","version":"3.5","name":"clash"}]

打开浏览器访问 http://127.0.0.1/get_data.json 就会返回上述json。

Pull解析方式

解析XML格式的数据有多重方式,主要是Pull和SAX两种方式。通过自己搭建的服务器拉取XML数据之后通过Pull解析的示例如下:

pull解析方式代码

SAX解析

Pull解析方式虽然非常好用,它比XML解析方式要复杂一些,但是语义方面更清楚,通常情况下,我们都会新建一个雷继承自DefaultHandler,并重写父类的5个方法:

继承DefaultHandler

每当解析某个节点的时候,startElement方法就会得到调用,其中localName记录当前节点的名字。接下来的工作就非常简单了,修改MainActivity中的代码,如下所示:

SAX解析

解析JSON格式数据

JSON相对XML而言优势在于它体积更小,在网络上传输的时候可以更省流量,但缺点是语义性较差。

使用JSONObject

比较简单,直接上截图的例子:

JSONObject解析

使用GSON

解析单个的对象比较简单,比如解析:

{“name”:”Tom”,”age”:20}

那只需要定义Person类,有String类型的name字段以及int类型的age字段,则可以使用:

1
2
3
Gson gson = new Gson();
Person person = gson.fromJson(jsonData,Person.class);

解析数组稍微麻烦点:

1
List<Person> people = gson.fromJson(jsonData,new TypeToken<List<Person>>(){}.getType());
谢谢你的鼓励