安卓联网框架 Retrofit
来源:互联网 发布:php测试工具 编辑:程序博客网 时间:2024/05/01 08:29
Retrofit这个框架来自于square公司和okhttp是一个公司,这个也是一个bulider链式模式,一种构建者模式,okhttp可以通过get或者post对服务器进行请求,请求到数据,而Retrofit是封装了网址,注解的方式来做的,同时做了解析和发送handler,这个时候我们就拿到了一个对象,更加方便。因此在使用它的时候需要导三个包okhttp,josn,和Retrofit.下面来看它如何使用
一.添加依赖。加上一个Retrofit的依赖
二、第二步开始Retrofit的构建
Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create())//解析方法 .baseUrl("http://route.showapi.com/")//主机地址 .build();三、用注解的方式进行Url的请求填参,来建立一个请求对象,Call<?>这个里面就是请求的内容,第一个用什么方式来请求。这里是get,这里的注解就是用接口有请求的方式和请求的参数
public interface retrofitinter {
//以get方式请求,里面需要填写一个网址,可以填写全路径http://route.showapi.com/213-4,也可以填写没填的那一部分,在前面已经填了"http://route.showapi.com/",所以可以填/213-4/,就可以。路径以注解的为准,通常填写以前面一部分+后面一部分构成; @GET("/213-4/")//这句话的意思就是请求完了之后给你一个Call,一个解析好了的jsontop对象,后面我们用的参数叠加用的是Query来叠加参数@Query("cate") String cate;这种格式,下面就拼好了三个参数,接口里面就写好了,主要说明参数咋么拼 Call<josntop> getResult(@Query("showapi_appid") String showapi_appid, @Query("topid") String topid, @Query("showapi_sign") String showapi_sign); }四、请求网络,获取接口对象PlayerActivity.retrofitinter retrofitinter=retrofit.create(PlayerActivity.retrofitinter.class);
2.对请求进行封装,拿到一个请求解析好的对象,这个方法是接口里面的参数,填的值就是参数Call<josntop> call=retrofitinter.getResult("48962","5","9ad486a2461e47f4b3391171911f5b4b");五、正式开始请求(异步,同步),得到一个对象new Callback<jsontop>(){},就可以拿到了,数据就可以进行操作了
call.enqueue(new Callback<josntop>() { @Override public void onResponse(Call<josntop> call, Response<josntop> response) { list1= (ArrayList<josntop.ShowapiResBodyBean.PagebeanBean.SonglistBean>) response.body().getShowapi_res_body().getPagebean().getSonglist(); TextView TV= (TextView) findViewById(R.id.Retorytext4);// for(int i=0;i<list1.size();i++)// {// list1.get(i).getSingername();//// Log.e("msg", list.get(i).getSingername()+"");// TV.append(list1.get(i).getSingername());////// listAdapter.get(list,context);// } GridLayoutManager line=new GridLayoutManager(RecycleAcitity.this,2);// LinearLayoutManager line= new LinearLayoutManager(RecycleAcitity.this); mrycleview=(RecyclerView)findViewById(R.id.listrecle); mrycleview.setLayoutManager(line);// line.setOrientation(OrientationHelper.HORIZONTAL); rec=new recycleadapter(); rec.setdata(list1); mrycleview.setAdapter(rec); } @Override public void onFailure(Call<josntop> call, Throwable t) { } });
//以下是完整的Reofit请求的代码
public class RecycleAcitity extends AppCompatActivity { private RecyclerView mrycleview; private ArrayList<josntop.ShowapiResBodyBean.PagebeanBean.SonglistBean> list1; recycleadapter rec; private ArrayList<String> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recycle_acitity); query(); } public void init() { data=new ArrayList<String>(); for (int i = 'A'; i < 'z'; i++) { data.add("" + (char) i); } } private void query() {// http://route.showapi.com/213-4?showapi_appid=48962&topid=5&showapi_sign=9ad486a2461e47f4b3391171911f5b4b //1.创建Retrofit对象 Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create())//解析方法 .baseUrl("http://route.showapi.com/")//主机地址 .build(); PlayerActivity.retrofitinter retrofitinter=retrofit.create(PlayerActivity.retrofitinter.class); Call<josntop> call=retrofitinter.getResult("48962","5","9ad486a2461e47f4b3391171911f5b4b"); call.enqueue(new Callback<josntop>() { @Override public void onResponse(Call<josntop> call, Response<josntop> response) { list1= (ArrayList<josntop.ShowapiResBodyBean.PagebeanBean.SonglistBean>) response.body().getShowapi_res_body().getPagebean().getSonglist(); TextView TV= (TextView) findViewById(R.id.Retorytext4);// for(int i=0;i<list1.size();i++)// {// list1.get(i).getSingername();//// Log.e("msg", list.get(i).getSingername()+"");// TV.append(list1.get(i).getSingername());////// listAdapter.get(list,context);// } GridLayoutManager line=new GridLayoutManager(RecycleAcitity.this,2);// LinearLayoutManager line= new LinearLayoutManager(RecycleAcitity.this); mrycleview=(RecyclerView)findViewById(R.id.listrecle); mrycleview.setLayoutManager(line);// line.setOrientation(OrientationHelper.HORIZONTAL); rec=new recycleadapter(); rec.setdata(list1); mrycleview.setAdapter(rec); } @Override public void onFailure(Call<josntop> call, Throwable t) { } }); } public interface retrofitinter { @GET("/213-4/") Call<josntop> getResult(@Query("showapi_appid") String showapi_appid, @Query("topid") String topid, @Query("showapi_sign") String showapi_sign); }}
阅读全文
0 0
- 安卓联网框架 Retrofit
- 安卓网上下载 到本地保存 使用框架Retrofit
- Android(安卓)网络框架之Retrofit网络框架加载数据使用方法
- 安卓开发框架(MVP+主流框架+基类+工具类)--- Retrofit+RxJava
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
- (三)安卓框架搭建之MVP+Retrofit+RxJava基础
- (四)安卓框架搭建之MVP+Retrofit+RxJava优化
- (安卓) MVP 框架 (Rxjava2+Retrofit)结合 实现网络请求
- 安卓RxJava与Retrofit初级应用
- 安卓开发学习心得-------Retrofit 2 (一)
- 安卓使用retrofit来请求网络
- 安卓Retrofit post请求 带参数
- Retrofit框架
- Retrofit框架
- 安卓实现联网查看图片
- 安卓虚拟机无法联网解决
- 安卓判断能否联网代码案例
- 安卓模拟器不能联网的解决方案
- Deepin Linux 安装JDK
- 剧场效应
- JavaScript (一)初识JS
- andriod——简单实现二级购物车
- JAVA的移位运算
- 安卓联网框架 Retrofit
- 瀑布流和一级购物车
- 机器学习常用python语句总结
- TabLayout
- 路由器LAN口
- 单例模式
- 【设计模式】策略模式
- 基于ArcGIS_10.0的地表高程序贯高斯模拟和地质统计建模
- CodeForces