美文网首页
Retrofit基础用法

Retrofit基础用法

作者: Jotyy | 来源:发表于2017-12-06 15:55 被阅读0次

    在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依赖

    • Gson
      com.squareup.retrofit2:converter-gson:2.0.2
    • Jackson
      com.squareup.retrofit2:converter-jackson:2.0.2
    • Simple XML
      com.squareup.retrofit2:converter-simplexml:2.0.2
    • Protobuf
      com.squareup.retrofit2:converter-protobuf:2.0.2
    • Moshi
      com.squareup.retrofit2:converter-moshi:2.0.2
    • Wire
      com.squareup.retrofit2:converter-wire:2.0.2
    • Scalars
      com.squareup.retrofit2:converter-scalars:2.0.2

    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();
    

    相关文章

      网友评论

          本文标题:Retrofit基础用法

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