implementation 'com.squareup.retrofit2:retrofit:(insert latest version)'
使用步骤:
1、声明请求接口
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
2、Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
3、获得接口实例
GitHubService service = retrofit.create(GitHubService.class);
4、调用接口方法请求
Call<List<Repo>> repos = service.listRepos("octocat");
<List<Repo = repos.execute().body(); //同步获取
异步获取
repos .enqueue(new Callback<List<Repo>>() {
@Override
public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
if (response.isSuccessful()) {
// tasks available
} else {
// error response, no access to resource?
}
}
@Override
public void onFailure(Call<List<Repo>> call, Throwable t) {
// something went completely south (like no internet connection)
Log.d("Error", t.getMessage());
}
}
请求接口
返回结果类型为: Call<实际结果类型>
方法注释:内置了5中注释GET,POST,PUT,DELETE, HEAD;可在它们基础上增加其它注释,这些注释为增加请求头信息或请求体信息类别
替换: 注释内容中使用{name},在参数中使用@Path("name"), name为字段名字
方法参数:
1、@Query("sort") String sort
2、 @QueryMap Map<String, String> options
3、注释类型为POST时,增加请求体 @Body
4、请求体也可为值对,增加方法注释@FormUrlEncoded,参数 @Field("first_name") String first
5、请求体为多个部分,增加方法注释 @Multipart, 参数:@Part("photo") RequestBody photo, @Part("description") RequestBody description
6、增加头注释 @Headers("Cache-Control: max-age=640000"),设置header
7、方法参数:@Header("Authorization") String authorization, 效果同6
8、参数 @HeaderMap Map<String, String> headers 设置多个
添加gson转换
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();