美文网首页
Retrofit入门学习

Retrofit入门学习

作者: atmanye | 来源:发表于2020-05-08 14:43 被阅读0次

一、什么是Retrofit

Retrofit主要是对Android网络请求的框架的封装,它遵循Restful设计风格,底层基于OkHttp。

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

Retrofit的使用步骤

1、创建描述网络请求的接口

public interface ServiceApi {

// 接口涉及到解耦,userLogin 方法是没有任何实现代码的

 @GET("LoginServlet")

 CalluserLogin(@Query("userName") String userName, @Query("password") String userPwd);

}

2、创建Retrofit实例,此处使用了Builder设计模式,创建了Retrofit实例

Retrofit retrofit =new Retrofit.Builder().

    baseUrl("http://192.168.29.95:8080/OkHttpServer/").

    client(okHttpClient).build();

3、创建网络请求接口实例 并 配置网络请求参数

mServiceApi = retrofit.create(ServiceApi.class);//创建网络请求接口实例

此处用了动态代理的模式创建接口实例 源码如下:

Call<UserLoginResult> login = RetrofitClient.getServiceApi().userLogin("Darren", "988514");//配置网络请求参数

//网络请求参数的封装将会在封装OkHttpCall时进行

4、发送网络请求

发送网络请求.png

最终会执行到封装的okHttpCall中,代码如下:


5、处理服务器返回的数据

    在parseBody()中进行解析;

// 获取解析类型 T 获取方法返回值的类型 

Type returnType = method.getGenericReturnType(); 

// 返回值对象 

Class <T> dataClass = (Class <T>) ((ParameterizedType) returnType).getActualTypeArguments()[0]; 

// 最后在用解析工厂去转换 

//解析完后 进行回调就完成了一次网络请求了

三、注解详解

1、方法注解:@GET @POST、@PUT、@DELETE、@PATCH、@OPTIONS、@HTTP

2、标记注解:@FormUrlEncoded、@Multipart、@Streaming

@FormUrlEncoded -- 用于修饰Fiedl注解 和FileldMap注解,表示请求正文将使用表单网址编码

@Multipart -- 作用于方法,表示请求体是多部分的,每个部分作为一个参数,且用Part注解声明

@Streaming -- 作用于方法未使用@Straming 注解,默认会把数据全部载入内存,返回数据较大时需要使用该注解。

3、参数注解:@Query 、@QueryMap、@Body、@Field、@FieldMap、@Part、@PartMap

@Query:作用于方法参数,用于添加查询参数,即请求参数,(参数值可以为空,为空时,忽略该值)例如:

@Query用于方法参数

@QueryMap:作用于方法的参数,以map的形式添加查询参数,即请求参数(map中的每一项发键和值都不能为空)

4、其他注解:@Path、@Header、@Headers、@Url

相关文章

网友评论

      本文标题:Retrofit入门学习

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