美文网首页
Retrofit学习

Retrofit学习

作者: 最黑暗的自己 | 来源:发表于2018-02-21 23:04 被阅读10次

    Android网络请求库中,Retrofit是当下最热的一个网络请求库。

    Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。

    原因:网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装。

    使用步骤:

    1.添加Retrofit库的依赖

    compile'com.squareup.retrofit2:retrofit:2.0.2'

        // Retrofit库

     compile'com.squareup.okhttp3:okhttp:3.1.2'

        // Okhttp库

    compile'com.squareup.retrofit2:converter-gson:2.0.2'

    //gson库

    2.添加网络权限

    <user-permission android:name="android.permission.INTERNET">

    3.创建服务器返回数据的类

    public class reception{

    //根据json格式

    }

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

    Retrofit将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 。

    1.用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 

    2.注:接口中的每个方法的参数都需要使用注解标注,否则会报错

    public interface GetRequest_Interface {

        @GET("openapi.do?keyfrom=Yanzhikai&key=2032414398&type=data&doctype=json&version=1.1&q=car")

        Call<Translation>  getCall();

    }

        // @GET注解的作用:采用Get方法发送网络请求    

    // getCall() = 接收网络请求数据的方法    

    // 其中返回类型为Call<*>,*是接收数据的类(即上面定义的Translation类)    

    // 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call}

    5.//创建Retrofit对象 

     Retrofit retrofit = new Retrofit.Builder()

       .baseUrl("http://fy.iciba.com/") // 设置 网络请求 Url                .addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)                .build();

    6.//创建 网络请求接口 的实例

     GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);

    7.//对 发送请求 进行封装 

     Call call = request.getCall();

    8.//步骤6:发送网络请求(异步) 

     call.enqueue(new Callback() {

                //请求成功时回调            @Override            

    public void onResponse(Call call, Response response) {

                    // 步骤7:处理返回的数据结果                

                    response.body().show();

                }

                //请求失败时回调            @Override            

    public void onFailure(Call call, Throwable throwable) {

                    System.out.println("连接失败");

                }

            });

    此处特意说明URL的组成:Retrofit把 网络请求的URL 分成了两部分设置:

    // 第1部分:在网络请求接口的注解设置@GET("openapi.do?keyfrom=Yanzhikai&key=2032414398&type=data&doctype=json&version=1.1&q=car")Call  getCall();

    // 第2部分:在创建Retrofit实例时通过.baseUrl()设置Retrofit retrofit =newRetrofit.Builder()            .baseUrl("http://fanyi.youdao.com/")//设置网络请求的Url地址

    .addConverterFactory(GsonConverterFactory.create())//设置数据解析器

    .build();

    // 从上面看出:一个请求的URL可以通过 替换块 和 请求方法的参数 来进行动态的URL更新。

    // 替换块是由 被{}包裹起来的字符串构成

    // 即:Retrofit支持动态改变网络请求根目录

    网络请求的完整 Url =在创建Retrofit实例时通过.baseUrl()设置 +网络请求接口的注解设置(下面称 “path“ )

    参考:http://blog.csdn.net/carson_ho/article/details/73732076

    相关文章

      网友评论

          本文标题:Retrofit学习

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