安卓联网框架 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);    }}
  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 营业执照年审过期了怎么办 工商营业执照吊销了怎么办 小规模企业工商年检怎么办 血流变检查偏高怎么办 信誉卡没有邮箱怎么办 税务年报没报怎么办 工商忘记年审了怎么办 营业执照脱审了怎么办 公司年审没有弄怎么办 车检标志丢了怎么办 机动车年检丢了怎么办 汽车保险标志丢了怎么办 车辆年检贴丢失怎么办 车检标贴丢了怎么办 检验标贴丢了怎么办 小车换年检标志怎么办 职称证忘记审验怎么办 联合年报没报怎么办 职称年审过期了怎么办 嘉兴驾模预约怎么办 电大考试去不了怎么办 负债高怎么办房贷 宁波鄞州银行卡怎么办 硕士学位实验数据不好怎么办 小区外过车很吵怎么办 建筑物初级消防证书怎么办 毕业答辩去不了怎么办 卡波西水痘样疹怎么办 58企业认证失败怎么办 炸鸡店没生意怎么办 你好漂亮重名了怎么办 医保卡被冒用怎么办 理财钱被骗走怎么办 个体户怎么办三方协议 社保户籍错了怎么办 身份证号码变更后驾驶证怎么办 公司倒闭欠工资怎么办 海南买房要社保怎么办? 工商核名不过怎么办 税局要求查账怎么办 完税凭证丢了怎么办