美文网首页
Android热门网络框架Retrofit详解

Android热门网络框架Retrofit详解

作者: 王灵 | 来源:发表于2019-03-06 23:20 被阅读0次

    秉承个人习惯,分三部:最快速度完成一个demo,了解基本姿势,实现更多的操作

    Retrofit简介

    简介还是要写在前面😄
    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求

    快速完成一个简单的请求

    1.添加依赖

     implementation 'com.squareup.retrofit2:retrofit:2.4.0'
     implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
     implementation 'com.squareup.okhttp3:okhttp:3.11.0'
    

    2.添加网络权限
    <uses-permission android:name="android.permission.INTERNET"/>
    3.新建返回数据类

    /**
     * 接收服务器返回数据的类
     */
    public class News {
      ...
    }
    

    4.新建用于描述网络请求的接口

    /**
     * 用于描述网络请求的接口
     */
    public interface APi {
        @GET("list.php?sort=desc&page=&pagesize=&time=1552055993&key=5df04feb8b3fc0bf91947a5ca91916c0")
        Call<News> getNews();
    }
    

    5.新建一个帮助类,用于网络初始化和相关处理

    public class Http {
        private static APi mApi;
    
        public static void init() {
            Retrofit retrofit = new Retrofit.Builder()
    //                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    //设置数据解析器
                    .addConverterFactory(GsonConverterFactory.create())
                    //设置网络请求的Url地址
                    .baseUrl("http://v.juhe.cn/joke/content/")
    //                .baseUrl("http://www.baidu.com")
                    .build();
            // 创建网络请求接口的实例
            mApi = retrofit.create(APi.class);
        }
    
        public static Call<News> getNews() {
            return mApi.getNews();
        }
    }
    

    6.在activity中使用

    public class RetrofitActivity extends HttpActivity {
        @Override
        public void action() {
            super.action();
            Http.init();
        }
    
        @Override
        public void request() {
            Http.getNews().enqueue(new Callback<News>() {
                @Override
                public void onResponse(Call<News> call, Response<News> response) {
                    tvRequest.setText(response.body().getResult().getData().get(0).getContent());
                    Log.e(TAG, response.toString());
                }
    
                @Override
                public void onFailure(Call<News> call, Throwable t) {
    
                }
            });
    
        }
    }
    

    先初始化,然后调用具体请求方法。
    有一点需要注意,在初始化里.baseUrl(“”)的设置,
    如果是以.com .cn 等结尾就不需要加 / ,否则就加上 /;
    具体请查看 https://www.jianshu.com/p/d6b8b6bc6209

    基本姿势

    Retrofit的好处:解耦
    Retrofit的特点:注解
    Retrofit还有什么功能:可以配置不同的HttpClient、可以配置不同的反序列化工具、可以配置不同的网络请求适配器

    • 注解

    Retrofit将Http请求抽象成Java接口,并在接口里面采用注解来配置网络请求参数,用动态代理来将接口的注解“翻译”成一个Http请求,最后再执行Http请求。注解可以说是Retrofit相较于其它网络请求的一大标志。下面就来了解了解在Retrofit中我们需要了解的注解

    1. 请求方法
    注解代码 请求格式
    @GET GET请求
    @POST POST请求
    @DELETE DELETE请求
    @HEAD HEAD请求
    @OPTIONS OPTIONS请求
    @PATCH PATCH请求
    1. 请求参数
    注解代码 说明
    @Headers 添加请求头
    @Path 替换路径
    @Query 替代参数值,通常是结合get请求的
    @FormUrlEncoded 用表单数据提交
    @Field 替换参数值,是结合post请求的

    相关文章

      网友评论

          本文标题:Android热门网络框架Retrofit详解

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