Android网络请求,获取数据demo,几种网络请求的区别,JSON 与 XML 的区别、优劣势

简介: Android网络请求,获取数据demo,几种网络请求的区别,JSON 与 XML 的区别、优劣势
private void sendRequestWithHttpURLConnection() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection = null;
                BufferedReader reader = null;
                try {
                    URL url = new URL("http://www.baidu.com");
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(4000);
                    connection.setReadTimeout(4000);
                    InputStream inputStream = connection.getInputStream();
                    reader = new BufferedReader(new InputStreamReader(inputStream));
                    StringBuilder stringBuilder = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        stringBuilder.append(line);
                    }
                    showResponse(stringBuilder.toString());//更新ui
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    private void showResponse(final String response) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setText(response);//设置TextView的内容
            }
        });
    }

GET、HEAD、POST、PUT、DELETE、OPTIONS区别



GET


get请求是用来获取数据的,只是用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作。

在这里我们认为get请求是安全的,以及幂等的。安全就是指不影响服务器的数据,幂等是指同一个请求发送多次返回的结果应该相同。

get请求会把请求的参数附件到URL后面,参数暴露在外面容易被抓包,参数没有限制


  • 安全、幂等
  • 用于获取数据


HEAD


HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。


POST


post请求一般是对服务器的数据做改变,常用来数据的提交,新增操作。

post请求参数都在body请求体中,body大小是有限制的


PUT


put请求与post一样都会改变服务器的数据,但是put的侧重点在于对于数据的修改操作,但是post侧重于对于数据的增加。


DELETE


delete请求用来删除服务器的资源。


OPTIONS


options请求属于浏览器的预检请求,查看服务器是否接受请求,预检通过后,浏览器才会去发get,post,put,delete等请求。至于什么情况下浏览器会发预检请求,浏览器会会将请求分为两类,简单请求与非简单请求,非简单请求会产生预检options请求。


JSON 与 XML 的区别、优劣势


1.主要区别:


(1)

JSON多用于简单的结构化数据方面,通常是以数据为中心,而不是以文档为中心,因此JSON不是文本标记语言,它是为数据设计而生。


(2)

XML可以用于结构化和半结构化数据两个方面,是一种文本标记语言,可以以数据及文档为中心,兼职两者。


2.优劣势:


(1)

JSON数据类型很少,并且需要预定义,够简单,适合新手入门;

JSON具有简单的结构定义和文档组合结构

但缺乏属性、名称空间、继承和替换。

JSON没有XML文本节点(text()),因此JSON不能实现混合内容的功能,这就说明了JSON并不是文本标记语言

还有JSON没有date数据类型,而XML存在date类型

但JSON可以实现date类型跟String类型的转换,数据库中使用TO_CAHR()和TO_DATE()方法,后台程式中可以使用格式化的方法进行转换


(2)

XML数据类型较多,数据可以是无类型的,也可以是基于XML模式或文档类型定义(DTD),相对比较复杂

一般来说,订单在XML文档中很重要,对于XML文档里面的javascript对象的顺序是无关要紧的。


3.总结:


由于其简单的定义和特性,使用JSON数据通常更容易生成、解析和处理XML数据。若用例包括合并不同的数据源通常使用XML,因为XML提供名称空间和其他促进模块化和继承的结构。


<1>.用XML表示中国部分省市数据如下:


<?xml version="1.0" encoding="utf-8" ?>
<country>
  <name>中国</name>
  <province>
    <name>黑龙江</name>
    <citys>
      <city>哈尔滨</city>
      <city>大庆</city>
    </citys>    
  </province>
  <province>
    <name>广东</name>
    <citys>
      <city>广州</city>
      <city>深圳</city>
      <city>珠海</city>
    </citys>   
  </province>
  <province>
    <name>台湾</name>
    <citys>
       <city>台北</city>
       <city>高雄</city>
    </citys> 
  </province>
  <province>
    <name>新疆</name>
    <citys>
      <city>乌鲁木齐</city>
    </citys>
  </province>
</country>

<2>.用JSON表示中国部分省市数据如下:

var country =
        {
            name: "中国",
            provinces: [
            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
            { name: "台湾", citys: { city: ["台北", "高雄"]} },
            { name: "新疆", citys: { city: ["乌鲁木齐"]} }
            ]
        }
复制代码

XML和JSON的优缺点对比


(1).可读性方面。

JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。


(2).可扩展性方面。

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。


(3).编码难度方面。

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码(简单容易上手),可是要写好XML就不太容易了。

在线转换:JSON在线 | JSON解析格式化—SO JSON在线工具


(4).解码难度方面。

XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。


(5).流行度方面。

XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。


(6).解析手段方面。

JSON和XML同样拥有丰富的解析手段。


(7).数据体积方面。

JSON相对于XML来讲,数据的体积小,传递的速度更快些。


(8).数据交互方面。

JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。


(9).数据描述方面。

JSON对数据的描述性比XML较差。


(10).传输速度方面。

JSON的速度要远远快于XML。


目录
相关文章
|
1月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
31 0
|
1月前
|
Java
【Netty 网络通信】传统IO方式处理网络IO数据
【1月更文挑战第9天】【Netty 网络通信】传统IO方式处理网络IO数据
|
1月前
|
安全 网络协议 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
18 0
|
1月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
17 0
|
14天前
|
API Android开发 开发者
mPaaS问题之网络分析没有数据如何解决
mPaaS配置是指在mPaaS平台上对移动应用进行的各项设置,以支持应用的定制化和优化运行;本合集将提供mPaaS配置的操作指南和最佳实践,助力开发者高效管理和调整移动应用的设置。
23 3
|
22天前
|
人工智能 数据处理 区块链
AIGC抓取网络数据进行模型训练是否合法?
AIGC抓取网络数据进行模型训练是否合法?
25 1
AIGC抓取网络数据进行模型训练是否合法?
|
26天前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
18 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
1月前
|
XML C# 数据格式
c# 追加 数据至xml文件
c# 追加 数据至xml文件
13 0
|
1月前
|
机器学习/深度学习 Python
网络训练需要的混合类型数据的组织方式
网络训练需要的混合类型数据的组织方式
|
1月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
22 0

相关产品

  • 云迁移中心