前言
Retrofit :Android和Java类型安全的HTTP客户端。是OkHttp的加强版,一个网络加载框架。底层是使用OKHttp封装的,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(著名例子:Retrofit + RxJava)。
更多了解retrofit,推荐地址:https://www.jianshu.com/p/0fda3132cf98
简单使用教程
官网手册:http://square.github.io/retrofit/
pom.xml
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-gson</artifactId>
<version>2.5.0</version>
</dependency>
定义一个接口
public interface ClassCenterClient {
/**
* 查询班级中的userId信息
*/
@GET("/crmclasscenter/v1/userclass/classes/{classId}")
Call<Resp<UserIdVO>> queryUserIdsByClassId(@Path("classId") String classId, @Query("forceQuery") String forceQuery);
}
注意:
1、上述使用@get注解,其他@post等注解也可用。
2、另外,参数中@Path注解 @Query注解解释如下
@Path | 参数放在url的/ 路径上 |
@Body | post等方式传递的参数 |
@Query | 参数是用?拼接的 |
调用其他服务方法时:
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://123.com")
.build();
ClassCenterClient service = retrofit.create(ClassCenterClient.class);
Call<Resp<UserIdVO>> aTrue = service.queryUserIdsByClassId(classId, "true");
try {
UserIdVO data = aTrue.execute().body().getData();
log.info("查询到本班的userId为:{}",data);
userIds = data.getUserIds();
} catch (IOException e) {
log.error("查询到本班用户信息失败,班级ID:{}",classId);
e.printStackTrace();
}