Retrofit基础用法

2017-12-06  本文已影响0人  Jotyy

在Android开发中,网络请求非常的常用而且重要。
在Android网络请求库中,Retrofit是当下最热门的一个。
由于所知尚浅,暂不考虑其它网络请求库与Retrofit的区别,仅将重点放在理解Retrofit的使用上。

使用介绍:

使用Retrofit的步骤如下:
1.添加Retrofit的依赖
2.创建接收服务器返回数据的类
3.创建用于描述网络请求的类
4.创建Retrofit实例
5.创建网络请求接口实例 并配置网络请求参数
6.发送网络请求(异步/同步)
7.处理服务器返回的数据

下面分步骤进行分析:

步骤一:添加Retrofit库的依赖
build.gradle
compile 'com.squareup.retrofit2:retrofit2.0.2'
AndroidMainfest.xml
<uses-permission android:name="android.permission.INTERNET"/>

步骤二:创建接收服务器数据的类
根据返回数据的格式和数据解析方式(Json、Xml等)来定义

步骤三:创建用于描述网络请求的接口
Retrofit 将Http请求抽象成Java接口:采用 注解 的方式来描述网络请求的参数并配置。

public interface GetRequest_Interface { 
@GET("openapi.dokeyfrom=Yanzhikai&key=2032414398&type=data&doctype=json&version=1.1&q=car") 
Call<Translation> getCall(); 
// @GET注解的作用:采用Get方法发送网络请求 
// getCall() = 接收网络请求数据的方法 
// 其中返回类型为Call<*>,*是接收数据的类(即上面定义的Translation类) 
// 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call<ResponseBody> }
这里解释一下注解类型:Retrofit注解类型

步骤四:创建Retrofit实例

Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("http://fanyi.youdao.com")   //设置网络请求的Url地址
                    .addConverterFactory(GsonConverterFactory.create());    //设置Converter 数据解析
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())    //设置支持RxJava
                    .build();

1、数据解析器(Converter)
Retrofit支持多种数据解析方式
使用时需要在Gradle添加依赖。
数据解析器
Gradle依赖

2、网络请求适配器(CallAdapter)
Retrofit支持多种网络请求适配器方式:guava、Java8和RxJava
注:使用Android默认的CallAdapter不需要添加网络适配器

使用时需要在Gradle添加依赖:
网络请求适配器

Gradle依赖
guava
com.squareup.retrofit2:adapter-guava:2.0.2
Java8
com.squareup.retrofit2:adapter-java8:2.0.2
rxjava
com.squareup.retrofit2:adapter-rxjava:2.0.2

步骤五:创建网络请求接口实例

//创建网络请求接口的实例
GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);

//对发送请求进行封装
Call<Reception> call = request.getCall();

步骤六:发送网络请求(异步/同步)
封装了数据转换、线程切换的操作

//发送网络请求(异步)
    call.enqueue(new Callback<Translation>()){
        //请求成功时回调
        @Override
        public void onResponse(Call<Translation>) call,Response<Translation> response){
            //请求处理 输出结果
            response.body().show();
        }

        //请求失败时回调
        @public void onFailure(Call<Translation> call,Trowable throwable){
            System.out.println("连接失败");
        }
    });
//发送网络请求(同步)
    Response<Reception> response = call.execute();

步骤七:处理返回数据
通过response类的body()对返回的数据进行处理

//发送网络请求(异步)
    call.enqueue(new Callback<Translation>()){
        //请求成功时回调
        @Override
        public void onResponse(Call<Translation>) call,Response<Translation> response){
            //请求处理 输出结果
            response.body().show();
        }

        //请求失败时回调
        @public void onFailure(Call<Translation> call,Trowable throwable){
            System.out.println("连接失败");
        }
    });

//发送网络请求(同步)

    Response<Reception> response = call.execute();
    //对返回数据进行处理
    response.body().show();
上一篇下一篇

猜你喜欢

热点阅读