美文网首页Android
「开源框架」Retrofit

「开源框架」Retrofit

作者: dongbingliu | 来源:发表于2018-08-08 12:04 被阅读233次
    Retrofit

    网络请求框架:Volley、OkHttp3、Retrofit,项目中使用 OkHttp3 较多。
    目前主流框架为Retrofit 「Retrofit 默认是基于 OkHttp 而做的封装」

    1. 添加依赖与网络权限

    // Retrofit 自动关联依赖OkHttp3
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    //接收到 Json 转换为对应的 JavaBean
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    
    // AndroidManifest.xml
    <uses-permission android:name="android.permission.INTERNET" />
    

    2. 创建 接收服务器返回数据 的类

    测试接口,WanAndroid 常用网站:http://www.wanandroid.com/friend/json

    public class FriendNet {
    
        private int errorCode;
        private String errorMsg;
        private List<DataBean> data;
         ...ignore getter & setter ...
    
        public static class DataBean {
            private String icon;
            private int id;
            private String link;
            private String name;
            private int order;
            private int visible;
            ... ignore getter & setter ...
        }
    }
    

    3. 创建用于描述网络请求接口

    public interface FriendService {
        @GET("friend/json")
        Call<FriendNet> getFriend();
    }
    

    4. 创建 Retrofit 实例

    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://www.wanandroid.com") // 设置网络请求的Url地址
                    .addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器            
                    .build();
    

    5. 创建网络请求接口实例,配置网络请求参数

     // 创建 网络请求接口 的实例
    FriendService api = retrofit.create(FriendService.class);
    //对 发送请求 进行封装
    Call<FriendNet> call = api.getFriend();
    

    6. 发送网络请求「异步/同步」

    call.enqueue(new Callback<FriendNet>() {
                @Override
                public void onResponse(Call<FriendNet> call, Response<FriendNet> response) {
                    Log.d(TAG, "onResponse: " + response.body().getData().get(0).getLink());
    
                }
    
                @Override
                public void onFailure(Call<FriendNet> call, Throwable t) {
                    Log.d(TAG, "onFailure: ");
                }
            });
    

    参考文章:
    【Android】Retrofit 2.0 的使用
    【Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMap...

    相关文章

      网友评论

        本文标题:「开源框架」Retrofit

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