安卓联网框架 Retrofit

 
   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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值