JAVA 小抄 -001-Retrofit 初级使用
发布于: 2020 年 05 月 08 日
业务代码中需要用到这个,记录一下使用方式:
定义返回对象 Repo:
public class Repo {
String statusCode = "200";
String message;
// setter and getter 也可以使用Lambok
public boolean isSuccess() {
return "200".equals(statusCode);
}
@Override
public String toString() {
return JsonUtil.toJsonString(this);
}
}
复制代码
定义接口配置网络请求:GitHubService
public interface GitHubService {
/**
* 各种类型的用法
**/
// https://api.github.com/users/{user}/repos
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
// https://api.github.com/users/list || https://api.github.com/users/list?sort=desc
//@GET("users/list?sort=desc")
@GET("users/list")
Call<List<User>> list();
// https://api.github.com/group/{id}/users
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId);
// https://api.github.com/group/{id}/users?sort=desc
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);
// https://api.github.com/group/{id}/users?key=value
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);
// https://api.github.com/ POST user
@POST("users/new")
Call<User> createUser(@Body User user);
@FormUrlEncoded
@POST("user/edit")
Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last);
@Multipart
@PUT("user/photo")
Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description);
// headers 方式
@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call<List<Widget>> widgetList();
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<User> getUser(@Path("username") String username);
@GET("user")
Call<User> getUser(@Header("Authorization") String authorization);
@GET("user")
Call<User> getUser(@HeaderMap Map<String, String> headers);
}
复制代码
使用方法:
public void listRepos(String user) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
GitHubService service = retrofit.create(GitHubService.class);
Call<List<Repo>> repos = service.listRepos("octocat");
try {
List<Repo> reposList = repos.execute().body();
reposList.forEach(System.out::println);
}catch (IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
RetrofitTrial retrofitTrial = new RetrofitTrial();
retrofitTrial.listRepos("");
}
复制代码
官方地址 : https://square.github.io/retrofit/
划线
评论
复制
发布于: 2020 年 05 月 08 日阅读数: 59
版权声明: 本文为 InfoQ 作者【NoNoGirl】的原创文章。
原文链接:【http://xie.infoq.cn/article/fb19977751fdb9ea8a5f77cb3】。文章转载请联系作者。
NoNoGirl
关注
还未添加个人签名 2018.09.17 加入
还未添加个人简介
评论