【第一篇】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"} }
1 package com.soyoungboy.volleydemo.bean; 2 import java.io.Serializable; 3 import com.soyoungboy.volleydemo.utils.GsonImpl; 4 public class WeathBean implements Serializable { 5 /** 6 * 7 */ 8 private static final long serialVersionUID = 1L; 9 public Weatherinfo weatherinfo; 10 @Override 11 public String toString() { 12 return "WeathBean [weatherinfo=" + weatherinfo + "]"; 13 } 14 public static WeathBean getBeanFromJson(String response){ 15 WeathBean weathBean= GsonImpl.get().toObject(response, WeathBean.class); 16 return weathBean ; 17 } 18 /** 19 * Temporary class name, create by Json2Class. 20 */ 21 public static class Weatherinfo implements Serializable { 22 public String SD; 23 public int isRadar; 24 public String time; 25 public int WSE; 26 public String WS; 27 public String WD; 28 public String njd; 29 public int qy; 30 public String Radar; 31 public int temp; 32 public int cityid; 33 public String city; 34 public String getSD() { 35 return SD; 36 } 37 public void setSD(String sD) { 38 SD = sD; 39 } 40 public int getIsRadar() { 41 return isRadar; 42 } 43 public void setIsRadar(int isRadar) { 44 this.isRadar = isRadar; 45 } 46 public String getTime() { 47 return time; 48 } 49 public void setTime(String time) { 50 this.time = time; 51 } 52 public int getWSE() { 53 return WSE; 54 } 55 public void setWSE(int wSE) { 56 WSE = wSE; 57 } 58 public String getWS() { 59 return WS; 60 } 61 public void setWS(String wS) { 62 WS = wS; 63 } 64 public String getWD() { 65 return WD; 66 } 67 public void setWD(String wD) { 68 WD = wD; 69 } 70 public String getNjd() { 71 return njd; 72 } 73 public void setNjd(String njd) { 74 this.njd = njd; 75 } 76 public int getQy() { 77 return qy; 78 } 79 public void setQy(int qy) { 80 this.qy = qy; 81 } 82 public String getRadar() { 83 return Radar; 84 } 85 public void setRadar(String radar) { 86 Radar = radar; 87 } 88 public int getTemp() { 89 return temp; 90 } 91 public void setTemp(int temp) { 92 this.temp = temp; 93 } 94 public int getCityid() { 95 return cityid; 96 } 97 public void setCityid(int cityid) { 98 this.cityid = cityid; 99 } 100 public String getCity() { 101 return city; 102 } 103 public void setCity(String city) { 104 this.city = city; 105 } 106 @Override 107 public String toString() { 108 return "Weatherinfo [SD=" + SD + ", isRadar=" + isRadar + ", time=" 109 + time + ", WSE=" + WSE + ", WS=" + WS + ", WD=" + WD 110 + ", njd=" + njd + ", qy=" + qy + ", Radar=" + Radar 111 + ", temp=" + temp + ", cityid=" + cityid + ", city=" 112 + city + "]"; 113 } 114 } 115 }
创建界面:
<?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" ><TextViewandroid:id="@+id/lvWeatherTv"android:layout_width="match_parent"android:layout_height="match_parent" ></TextView> </LinearLayout>
主要的逻辑:
- 首先创建请求队列 mqueue;
- 创建json请求jsonObjectRequest,实现请求成功和失败的逻辑编写;
- 将请求放入请求队列中去。
1 public class JsonActivity extends Activity { 2 private static final String TAG = "com.soyoungboy.volleydemo.JsonActivity"; 3 private RequestQueue mQueue; 4 private static final String WEATHER_LINK = "http://www.weather.com.cn/data/sk/101280101.html"; 5 private TextView lvWeatherTv; 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_json); 9 lvWeatherTv = (TextView) findViewById(R.id.lvWeatherTv); 10 mQueue = Volley.newRequestQueue(this); 11 getWeatherInfo(); 12 } 13 public void getWeatherInfo() { 14 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( 15 WEATHER_LINK, null, new Response.Listener<JSONObject>() { 16 @Override 17 public void onResponse(JSONObject response) { 18 if (!TextUtils.isEmpty(response.toString())) { 19 WeathBean weathBean = WeathBean 20 .getBeanFromJson(response.toString()); 21 lvWeatherTv.setText(weathBean.toString()); 22 } 23 } 24 }, new Response.ErrorListener() { 25 @Override 26 public void onErrorResponse(VolleyError error) { 27 ToastUtils.toastL(getApplicationContext(), 28 error.getMessage()); 29 } 30 }); 31 mQueue.add(jsonObjectRequest); 32 } 33 }
【第一篇】Volley的使用之json请求相关推荐
- json处理第一篇:利用Jackson处理json
利用Jackson处理json需要导入的jar包(2以上版本的): <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.c ...
- Webpack系列-第一篇基础杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...
- requests(二): json请求中固定键名顺序消除键和值之间的空格
继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定 2.服务端对于接收到的json数据中,若key和value之间有空格, ...
- 深入理解ajax系列第一篇——XHR对象
前面的话 1999年,微软公司发布IE5,第一次引入新功能:允许javascript脚本向服务器发起HTTP请求.这个功能当时并没有引起注意,直到2004年Gmail发布和2005年Google Ma ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...
- Google官方网络框架-Volley的使用解析Json以及加载网络图片方法
Google官方网络框架-Volley的使用解析Json以及加载网络图片方法 Volley是什么?Google I/O 大会上,Google 推出 Volley的一个网络框架Volley适合什么场景? ...
- vue+uni-app商城实战 | 第一篇:从0到1快捷开发一个商城微信小程序,无缝接入OAuth2实现一键授权登录
一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...
- 单片机学习:第一篇 基于Python的树莓派语音助手
title: 单片机学习:第一篇 基于Python的树莓派语音助手 tags: 树莓派,python,语音助手,百度AIP 目录 一.pyaudio录音 二.语音识别 三.与图灵机器人对话 四.语音合 ...
- 聊聊后端程序员的知识体系-第一篇
聊聊后端程序员的知识体系-第一篇 原文链接:https://www.fpthinker.com/backend_knowledge_architecture/knowledge.htmll 亲爱的读者 ...
最新文章
- mysql优化说明_MySQL性能优化各个参数解释说明
- Android控件ActionBar浅析及适配2.x的方法介绍
- Hadoop sqoop从MySQL导入数据到HDFS
- JavaScript数据结构与算法——数组详解(下)
- docker elasticsearch:7.14.2
- SO_REUSEADDR SO_REUSEPORT 解析
- ubuntu16.04下FSA-Net环境安装和训练
- 电工产品的电磁兼容要求
- C++实现Vgg19分类器(四)主函数
- phpstorm配置xdebug 3.0教程
- 网络知识:路由器常见故障分析及处理方法
- OKR助理源代码说明
- 【ABMDRNet2021】 Adaptive-weighted Bi-directional Modality Difference Reduction Network for RGB-T Sema
- 微信公众号自定义服务器,微信公众号自定义服务器的第一次验证
- PAT-ADVANCED1118——Birds in Forest
- 【Spring】详解Spring全家桶
- 中国IT风险投资机构
- 云知声深耕智慧医疗,推出单病种质控平台赋能单病种质量控制
- 推荐系统与知识图谱(2)
- Java 类加载顺序与成员变量初始化
热门文章
- 使用c 对mysql数据库_c对mysql数据库的操作
- linux重装系统u盘启动不了怎么办,U盘安装Linux开机无法启动解决方法
- datagrid底部显示水平滚动_CSS flex 布局,头部和底部固定,中间出现滚动条
- linux root所在目录,Linux下误删root目录
- linux中sar命令的选项很多,Linux sar 命令详解
- python函数作用域_Python命名空间和作用域的基本认识和一点小魔法
- Js实现文字水平滚动
- 学习vue3系列computed
- php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
- admin.php c install,laravel-admin后台的安装