Retrofit2.0使用介绍

作者: 难得糊涂与君勉 | 来源:发表于2016-12-29 15:33 被阅读75次
    • 准备工作
    下列是必须的
    导入依赖:compile 'com.squareup.retrofit2:retrofit:2.1.0'
               compile 'com.squareup.retrofit2:converter-gson:2.1.0'
               compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
               具体版本根据AS来决定,但必须是squareup公司的。
    导入联网权限:<uses-permission android:name="android.permission.INTERNET"/>
    
    • 第一步
    创建Retrofit对象,由于Retrofit是有构建者模式来完成的,因此其创建的时候用build
    代码如下:
    retrofit = new Retrofit.Builder()
    .baseUrl("http://www.yuyigufen.com/")//表示你要请求的网址的Host部分,注意,前面没有"/",后面有"/"
    .addConverterFactory(GsonConverterFactory.create())//添加转换器工厂对象的序列化和反序列化。这个必须要添加
    .build();//构建得到Retrofit对象,另外别的常用的就是可以.client()//添加一个客户端对象
    
    • 第二步
    创建(得到)一个自定义的API端点接口的实现
    首先,准备实体类,里面的属性最好就是全部解析,其他的不需要特别的调整,全部解析就可以了。
    在准备自定义的接口
    public interface MyInterface {
        @POST("API/public/index/login/check.html")//这里展示的是post请求,这里面放的是path部分,后面不用添加"/"
        public Call<ShiYan> getInfo(@QueryMap ArrayMap<String,String> params);
    //Call<你自己写的实体类>,
    //@QueryMap 都是必须的
    //params 表示后期添加的请求参数
    }
    可以得到API端点接口了
           myInterface = retrofit.create(MyInterface.class);//得到API端点接口对象
            params = new ArrayMap<>();//开始配置请求参数
            params.put("username","admin");//根据自定义的接口里面类型确定
            params.put("password","admin");
    
    • 第三步
    得到API端点接口对象之后,将其设置
    call = myInterface.getInfo(params);//call 其实是Call<ShiYan> call;
    
    • 第四步
    前面都是准备工作。最后开始执行
    可以选择同步执行,可以选择异步执行,下面是异步执行:
    call.enqueue(new Callback<ShiYan>() {
                @Override
                public void onResponse(Call<ShiYan> call, Response<ShiYan> response) {
    //这个是请求成功之后的回调。返回的是一个对象,是你自己定义的实体类的对象
                    body = response.body();
    //                Toast.makeText(MainActivity.this,body.getUerID(),Toast.LENGTH_SHORT).show();
                    Log.d("flag","------"+body.getStatus());
                    Log.d("flag","------"+body.getInfo().getContent());
                    Log.d("flag","------"+body.getInfo().getUserID());
                }
    
                @Override
                public void onFailure(Call<ShiYan> call, Throwable t) {
    //这个是请求失败的回调
                    Log.d("flag","不好意思失败了");
                    Log.d("flag","ssssssssssssssssss"+t);
                }
            });
    

    相关文章

      网友评论

        本文标题:Retrofit2.0使用介绍

        本文链接:https://www.haomeiwen.com/subject/wmqpvttx.html