Android Retrofit框架请求复杂json数据
来源:互联网 发布:手机怎么打开index.php 编辑:程序博客网 时间:2024/05/16 19:20
之前的时候看过很多的博客对于json数据进行解析,今天有时间自己亲自对json数据的解析做了练习,在这里分享自己的练习过程中的一些小问题,希望可以帮助到更多的人
这个是我需要请求的json数据,其中我们需要解析的字段是“tracks”字段
我们来简单的分析一下这个数据,从这个地方我们可以看出需要解析的字段是一个集合,集合里面有很多的对象,这里我们使用的GSON的序列化的方式来解析我们获取到的json数据
步骤1:添加Retrofit库的依赖
compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.okhttp3:okhttp:3.1.2'compile 'com.squareup.retrofit2:converter-gson:2.0.2'
这里我们用到的是三个库Retrofit依赖库,OKhttp依赖库,还有就是Gson的依赖库。
步骤2:创建 接收服务器返回数据 的类
创建一个接收解析对象的类也就是我们通过这个json文件分析出来的类对象,由于我们这里现要求只解析tracks字段所以我们这里对于类的创建也就是简单的基于这样的一个简单的原则,这个我会在以后重点分析Gson解析json数据的时候对于这里的这个问题做进一步的分析。
这个是对tracks字段的定义(注意这里我们使用的是类外定义的方式没有用定义内部类的方式)
public class Tracks { private int Tid; private String title; public int getTid() { return Tid; } public void setTid(int tid) { Tid = tid; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }}
外层对象的Java类
public class MusicItem { private List<Tracks> tracks; public List<Tracks> getTracks() { return tracks; } public void setTracks(List<Tracks> tracks) { this.tracks = tracks; }}
步骤3:创建 用于描述网络请求 的接口
public interface Getrequest_Interface { //http://v5.pc.duomi.com/search-ajaxsearch-searchall?kw=二胡&pi=1&pz=10 /** * 通过配置文件的形式来配置get请求的参数 * @return 返回值表示请求到的数据 */ //@GET("ajax.php?a=fy&f=auto&t=auto&w=hello%20world") @GET("search-ajaxsearch-searchall?") Call<MusicItem> getCall(@Query("kw") String kw,@Query("pi") int pi,@Query("pz") int pz); // 注解里传入 网络请求 的部分URL地址 // Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里 // 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略 // getCall()是接受网络请求数据的方法}
步骤4:创建 Retrofit 实例
步骤5:创建 网络请求接口实例 并 配置网络请求参数
步骤6:发送网络请求(采用最常用的异步方式)
由于这三步在开发的时候是比较密切的,所以我们可以使用封装一个函数的方式来实现这些东西
public void request() { //步骤4:创建Retrofit对象 Retrofit retrofit = new Retrofit.Builder() //.baseUrl("http://fy.iciba.com/") // 设置 网络请求 Url .baseUrl("http://v5.pc.duomi.com/") .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖) .build(); // 步骤5:创建 网络请求接口 的实例 Getrequest_Interface request = retrofit.create(Getrequest_Interface.class); //对 发送请求 进行封装 Call<MusicItem> call = request.getCall("二胡",1,10); //步骤6:发送网络请求(异步) call.enqueue(new Callback<MusicItem>() { //请求成功时回调 @Override public void onResponse(Call<MusicItem> call, Response<MusicItem> response) { // 步骤7:处理返回的数据结果 //response.body().toString(); //System.out.println(response.body().getTracks().get(0).getTitle()); for (Tracks tracks: response.body().getTracks()) { System.out.println(tracks.getTitle()); } } //请求失败时回调 @Override public void onFailure(Call<MusicItem> call, Throwable throwable) { System.out.println("连接失败"); } }); }
步骤7: 处理服务器返回的数据
最后简单的输出效果就是这个样子的
阅读全文
0 0
- Android Retrofit框架请求复杂json数据
- Android Retrofit 请求字符串(非JSON数据)
- Android网络请求框架之Retrofit(一)
- Android网络请求框架之Retrofit(二)
- Android网络请求框架之Retrofit(三)
- Android高效网络请求Retrofit框架
- Android网络请求框架之Retrofit实践
- Android网络请求框架Retrofit使用详解
- Android 网络请求框架之Rxjava+Retrofit
- Android 网络请求框架之Rxjava+Retrofit
- Android中retrofit网络请求框架使用
- Android 网络请求框架之Rxjava+Retrofit
- Android 网络请求框架之Rxjava+Retrofit
- [Android 知识点] 网络请求框架Retrofit使用
- Android网络请求框架:Retrofit入门
- Retrofit 2.0 Android网络请求框架
- Android MVP框架+RxJava+Retrofit+cecycleView,请求网络数据并加载
- 【Android】Retrofit的使用(2)-使用Retrofit提交JSON数据
- idea中springmvc, mybatis, gradle环境搭建
- sbt基础
- 共用体判断大小端模式
- L1-018. 大笨钟
- POJ1679 The Unique MST —— 次小生成树
- Android Retrofit框架请求复杂json数据
- cocopods
- 快速乘-模板
- TCP连接的同时打开和同时关闭
- java基础(2)
- ajax基本语法
- 使用github pages创建博客
- 欧几里得扩展
- 李白打酒