最近项目写完,有开始新的学习了,volley很久以前就接触了,也看了源码,然而却没有通过文章去记录自己的学习成果。

首先讲下volley的特点:

  1,扩展性强。Volley 中大多是基于接口的设计,可配置性强。

   2,一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。

  3,默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现,这两者的区别及优劣在4.2.1 Volley中具体介绍。

  4,提供简便的图片加载工具。

现在计划是:
  1. 写volley相关demo
  2. 分析volley源码
  3. 扩展和完善volley,给volley添加一些更加方便开发的功能等。
在编写代码前首先导入volley的库或者引入jar包,这里不进行赘述,只讲使用。
demo1,json数据请求:
    首先请求的json数据格式:
  1. {
    "weatherinfo" : {
    "Radar" : "JC_RADAR_AZ9200_JB",
    "SD" : "77%",
    "WD" : "东南风",
    "WS" : "2级",
    "WSE" : "2",
    "city" : "广州",
    "cityid" : "101280101",
    "isRadar" : "1",
    "njd" : "暂无实况",
    "qy" : "1004",
    "temp" : "24",
    "time" : "10:45"
    }
    }
首先创建javaBean:
  1.  package com.soyoungboy.volleydemo.bean;
    import java.io.Serializable;
    import com.soyoungboy.volleydemo.utils.GsonImpl;
    public class WeathBean implements Serializable {
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    public Weatherinfo weatherinfo;
    @Override
    public String toString() {
    return "WeathBean [weatherinfo=" + weatherinfo + "]";
    }
    public static WeathBean getBeanFromJson(String response){
    WeathBean weathBean= GsonImpl.get().toObject(response, WeathBean.class);
    return weathBean ;
    }
    /**
    * Temporary class name, create by Json2Class.
    */
    public static class Weatherinfo implements Serializable {
    public String SD;
    public int isRadar;
    public String time;
    public int WSE;
    public String WS;
    public String WD;
    public String njd;
    public int qy;
    public String Radar;
    public int temp;
    public int cityid;
    public String city;
    public String getSD() {
    return SD;
    }
    public void setSD(String sD) {
    SD = sD;
    }
    public int getIsRadar() {
    return isRadar;
    }
    public void setIsRadar(int isRadar) {
    this.isRadar = isRadar;
    }
    public String getTime() {
    return time;
    }
    public void setTime(String time) {
    this.time = time;
    }
    public int getWSE() {
    return WSE;
    }
    public void setWSE(int wSE) {
    WSE = wSE;
    }
    public String getWS() {
    return WS;
    }
    public void setWS(String wS) {
    WS = wS;
    }
    public String getWD() {
    return WD;
    }
    public void setWD(String wD) {
    WD = wD;
    }
    public String getNjd() {
    return njd;
    }
    public void setNjd(String njd) {
    this.njd = njd;
    }
    public int getQy() {
    return qy;
    }
    public void setQy(int qy) {
    this.qy = qy;
    }
    public String getRadar() {
    return Radar;
    }
    public void setRadar(String radar) {
    Radar = radar;
    }
    public int getTemp() {
    return temp;
    }
    public void setTemp(int temp) {
    this.temp = temp;
    }
    public int getCityid() {
    return cityid;
    }
    public void setCityid(int cityid) {
    this.cityid = cityid;
    }
    public String getCity() {
    return city;
    }
    public void setCity(String city) {
    this.city = city;
    }
    @Override
    public String toString() {
    return "Weatherinfo [SD=" + SD + ", isRadar=" + isRadar + ", time="
    + time + ", WSE=" + WSE + ", WS=" + WS + ", WD=" + WD
    + ", njd=" + njd + ", qy=" + qy + ", Radar=" + Radar
    + ", temp=" + temp + ", cityid=" + cityid + ", city="
    + city + "]";
    }
    }
    }

    创建界面:

activity_json.xml
  1. <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
    android:id="@+id/lvWeatherTv"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    </TextView>
    </LinearLayout>

    主要的逻辑:

  1. 首先创建请求队列 mqueue;
  2. 创建json请求jsonObjectRequest,实现请求成功和失败的逻辑编写;
  3. 将请求放入请求队列中去。
 public class JsonActivity extends Activity {
private static final String TAG = "com.soyoungboy.volleydemo.JsonActivity";
private RequestQueue mQueue;
private static final String WEATHER_LINK = "http://www.weather.com.cn/data/sk/101280101.html";
private TextView lvWeatherTv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json);
lvWeatherTv = (TextView) findViewById(R.id.lvWeatherTv);
mQueue = Volley.newRequestQueue(this);
getWeatherInfo();
}
public void getWeatherInfo() {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
WEATHER_LINK, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (!TextUtils.isEmpty(response.toString())) {
WeathBean weathBean = WeathBean
.getBeanFromJson(response.toString());
lvWeatherTv.setText(weathBean.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
ToastUtils.toastL(getApplicationContext(),
error.getMessage());
}
});
mQueue.add(jsonObjectRequest);
}
}
显示结果:
 
 

【第一篇】Volley的使用之json请求的更多相关文章

  1. json处理第一篇:利用Jackson处理json

    利用Jackson处理json需要导入的jar包(2以上版本的): <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.c ...

  2. 谷歌Volley网络框架讲解——第一篇

    自从公司新招了几个android工程师后,我清闲了些许.于是就可以有时间写写博客,研究一些没来的研究的东西. 今年的谷歌IO大会上,谷歌推出了自己的网络框架——Volley.不久前就听说了但是没有cl ...

  3. 在net中json序列化与反序列化 面向对象六大原则 (第一篇) 一步一步带你了解linq to Object 10分钟浅谈泛型协变与逆变

    在net中json序列化与反序列化   准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ...

  4. Android框架Volley使用:Json请求实现

    首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...

  5. 深入理解ajax系列第一篇——XHR对象

    × 目录 [1]创建对象 [2]发送请求 [3]接收响应[4]异步处理[5]实例演示 前面的话 ajax是asynchronous javascript and XML的简写,中文翻译是异步的java ...

  6. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  7. 第一篇:webservice初探

    接触webservice也有一段时间了,为了查缺补漏,把知识点系统化,准备写几篇博文梳理下webservice的知识点,这是第一篇,对webservice进行大致的介绍. 1.什么是webservic ...

  8. Google官方网络框架-Volley的使用解析Json以及加载网络图片方法

    Google官方网络框架-Volley的使用解析Json以及加载网络图片方法 Volley是什么? Google I/O 大会上,Google 推出 Volley的一个网络框架 Volley适合什么场 ...

  9. ElasticSearch查询 第一篇:搜索API

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

随机推荐

  1. Linux编程之给你的程序开后门

    这里说的"后门"并不是教你做坏事,而是让你做好事,搭建自己的调试工具更好地进行调试开发.我们都知道,当程序发生异常错误时,我们需要定位到错误,有时我们还想,我们在不修改程序的前提下 ...

  2. C语言之break和continue

    一 break 和 continue 的介绍 break: 1).跳出当前所在的switch语句(tips:可查看前面 switch 部分)   2).跳出当前所在的循环 continue: 结束本次 ...

  3. 驱动07.USB驱动程序

    1 了解USB识别的过程 eg:在Windows系统下的一个现象:把手机的USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱 ...

  4. 基于PaaS和SaaS研发的商业云平台实战 转 (今后所有的IT行业会持续集成,往虚拟化方向更快更深的发展,商业化才是这些技术的最终目的)

    背景介绍 SaaS.PaaS.IaaS等云服务模式已经被大家普遍认可,在研发过程中借力一些PaaS和SaaS平台,能够提升产品的研发速度和功能稳定程度.本文将通过真实的商业平台案例-MaxWon研发实 ...

  5. Javascript中 a.href 和 a.getAttribute('href') 结果不完全一致

    今天无意中发现这个么问题,页面上对所有A标签的href属性为空的自动添加一个链接地址,结果发现if判断条件始终都没生效,莫名其妙. 原来Javascript中 a.href 和 a.getAttrib ...

  6. UVALive 7141 BombX

    离散化,线段树.$2014$年$ACM/ICPC$亚洲区域赛上海站$D$题. 可以处理出炸任意相邻的$h$行能消灭的点的数量,以及炸任意相邻的$w$列能消灭的点的数量,分别用$py[i]$和$px[i ...

  7. (一)Harbor安装 -- 企业级Registry仓库

    根据Harbor官方描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...

  8. [SQL基础教程] 4-4 事务

    [SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 ...

  9. css-div下内容垂直居中

    1.多行行文字在固定高度的div中垂直居中,只兼容高级浏览器和移动端 .detail { width: 395px; height: 289px; display: -webkit-box; -web ...

  10. windows自带的线程池

    #define _CRT_SECURE_NO_WARNINGS #include "iostream" #include "windows.h" using n ...