【第一篇】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查询 第三篇: ...
随机推荐
- web开发技术中Servlet技术的概述
1.servlet是什么:servlet是一个位于服务器端的java应用程序它可以像jsp一样,直接输出信息 servlet类必须继承HttpServlet类,否则,不能称为serlvet servl ...
- html - table 表格不被撑开,td某些列宽度固定某些列自适应
table-layout 属性的解释:http://www.w3school.com.cn/cssref/pr_tab_table-layout.asp 1,实现table细边框,设置如下css: t ...
- 微信小程序入门——怎么建多个项目?(导入官方Demo程序进行学习)
昨天1月9日微信小程序发布,顿时被朋友圈刷爆,今天看了一下官方文档,自己开始一步一步搭建环境体验小程序开发. 常见问题: 1.微信小程序开发是否需要重新创建开发者账号? 需要,即使之前申请了微信服务号 ...
- 办理渥太华大学(本科)学历认证『微信171922772』Ottawa U学位证成绩单使馆认证University of Ottawa
办理渥太华大学(本科)学历认证『微信171922772』Ottawa U学位证成绩单使馆认证University of Ottawa QQ/微信171922772办理毕业证成绩单.真实使馆及教育部学历 ...
- TestNG中的DataProvider返回Iterator<Object[]>的妙用
TestNG中使用DataProvider有个好处,就是: 1. 在执行用例的时候dataProvider迭代中的每组数据都是作为一个用例执行 2. 在测试数据有规律的情况下,免去了添加testXML ...
- 关于onCreate(Bundle savedInstanceState, PersistableBundle persistentState)
API 21为Activity增加了一个新的属性,只要将其设置成persistAcrossReboots,activity就有了持久化的能力,另外需要配合一个新的bundle才行,那就是Persist ...
- TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
1,面向对象的特性一:类,继承,见上一篇博客: 2,面向对象的特性二: 泛型(generic):参数化的类型,一般用来限制集合的内容:指定只能放某个类型的元素 如下图中的尖括号中的Person,就代表 ...
- win8 or win7安装ubuntu双系统
安装双系统的效果 现在使用win和linux双系统,整个环境相当方便好用,比如在Linux系统上,仍能访问NTFS(win的文件系统格式)中的文件和文档,当然win下的一些像matlab.vs等是不能 ...
- 用python做中文自然语言预处理
这篇博客根据中文自然语言预处理的步骤分成几个板块.以做LDA实验为例,在处理数据之前,会写一个类似于实验报告的东西,用来指导做实验,OK,举例: 一,实验数据预处理(python,结巴分词)1.对于爬 ...
- Android Studio新手
目标:Android Studio新手–>下载安装配置–>零基础入门–>基本使用–>调试技能–>构建项目基础–>使用AS应对常规应用开发 AS简介 经过2年时间的研 ...