Android热门网络框架Retrofit详解

2019-03-06  本文已影响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请求的
上一篇下一篇

猜你喜欢

热点阅读