【第一篇】Volley的使用之json请求
最近项目写完,有开始新的学习了,volley很久以前就接触了,也看了源码,然而却没有通过文章去记录自己的学习成果。
首先讲下volley的特点:
1,扩展性强。Volley 中大多是基于接口的设计,可配置性强。
2,一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。
  3,默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现,这两者的区别及优劣在4.2.1 Volley中具体介绍。
4,提供简便的图片加载工具。
- 写volley相关demo
- 分析volley源码
- 扩展和完善volley,给volley添加一些更加方便开发的功能等。
- {
 "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"
 }
 }
- 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 + "]";
 }
 }
 }- 创建界面: 
- <?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>- 主要的逻辑: 
- 首先创建请求队列 mqueue;
- 创建json请求jsonObjectRequest,实现请求成功和失败的逻辑编写;
- 将请求放入请求队列中去。
 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请求的更多相关文章
- json处理第一篇:利用Jackson处理json
		利用Jackson处理json需要导入的jar包(2以上版本的): <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.c ... 
- 谷歌Volley网络框架讲解——第一篇
		自从公司新招了几个android工程师后,我清闲了些许.于是就可以有时间写写博客,研究一些没来的研究的东西. 今年的谷歌IO大会上,谷歌推出了自己的网络框架——Volley.不久前就听说了但是没有cl ... 
- 在net中json序列化与反序列化    面向对象六大原则   (第一篇) 一步一步带你了解linq to Object    10分钟浅谈泛型协变与逆变
		在net中json序列化与反序列化 准备好饮料,我们一起来玩玩JSON,什么是Json:一种数据表示形式,JSON:JavaScript Object Notation对象表示法 Json语法规则 ... 
- Android框架Volley使用:Json请求实现
		首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ... 
- 深入理解ajax系列第一篇——XHR对象
		× 目录 [1]创建对象 [2]发送请求 [3]接收响应[4]异步处理[5]实例演示 前面的话 ajax是asynchronous javascript and XML的简写,中文翻译是异步的java ... 
- 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)
		Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ... 
- 第一篇:webservice初探
		接触webservice也有一段时间了,为了查缺补漏,把知识点系统化,准备写几篇博文梳理下webservice的知识点,这是第一篇,对webservice进行大致的介绍. 1.什么是webservic ... 
- Google官方网络框架-Volley的使用解析Json以及加载网络图片方法
		Google官方网络框架-Volley的使用解析Json以及加载网络图片方法 Volley是什么? Google I/O 大会上,Google 推出 Volley的一个网络框架 Volley适合什么场 ... 
- ElasticSearch查询 第一篇:搜索API
		<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ... 
随机推荐
- SmoOne——开源免费的企业移动OA应用,基于VS.Net
			一.SmoOne是什么一个开源的移动OA应用 二.语言.Net 三.开发环境Visual Studio 四.开发平台Smobiler Designer 五.功能该应用开源代码中包含注册.登录.用户信息 ... 
- MVC源码解析 - HttpRuntime解析
			先看一张图, 从这张图里, 能看到请求是如何从CLR进入HttpRuntime的. 一.AppManagerAppDomainFactory 看到这张图是从 AppManagerAppDomainFa ... 
- 使用div模拟textarea,实现文本输入框高度自适应(附:js控制textarea实现文本输入框高度自适应)
			一.使用textarea标签进行多行文本的输入有很多限制,比如不能实现高度自适应,会出现难看的滚动条等问题. HTML5中添加了一个新属性contenteditable,该属性可以让input,tex ... 
- 四、spark常用函数说明学习
			1.parallelize 并行集合,切片数.默认为这个程序所分配到的资源的cpu核的个数. 查看大小:rdd.partitions.size sc.paraliel ... 
- [HMLY]9.深入浅出-iOS Reactive Cocoa的常见用法
			简介 今天的主角是Reactive Cocoa,聊聊Reactive Cocoa的常见使用:KVO.Target.Delegate.Notification. Reactive Cocoa 是一个重量 ... 
- 创建ListView控件
			// 创建List控件 HWND hListView = CreateWindow(WC_LISTVIEW ,/*listview 宏的名字*/ L"" ,/*窗口标题*/ WS_ ... 
- 关于jquery 1.9以上多次点击checkbox无法选择的
			在jquery1.9之前,我们对于一个checkbox对象来进行重复选择或者取消, 我们可以使用这个方法$().attr('checked',checked);//选中 $().removeAttr( ... 
- Java学习笔记-File
			//文件操作 //2015年4月30日15:40:21 package com.alfredsun.first.main; import java.io.File; import java.io.IO ... 
- OpenCV备忘
			都是转来的内容的,算是整理一下 OpenCV备忘 深度和通道的理解 CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵 CV_8UC1 CV_8SC1 ... 
- c# base和this在构造函数中的应用
			构造函数可以使用 base 关键字来调用基类的构造函数.例如: public class Manager : Employee{ public Manager(int annualSalary) : ... 
