概述
Retrofit 是一个类型安全的 REST 客户端,Square 提供的开源产品。它可以直接解析 JSON 数 据变成 JAVA 对象,甚至支持回调操作,处理不同的结果。
官方地址:http://square.github.io/retrofit/ 在官方地址中可以下载 jar 包,也可以在 AndroidStudio 中引入。
使用
1.首先我们要定义一个接口
public interface GitHubService { @GET("users/list?sort=desc") Call<List<User>> listUser (@Path("user") String user); }
下面讲解一下这个接口
1 . @GET 就是我们的请求方式。主要有 GET, POST, PUT, DELETE, and HEAD Call 是关键字, User 是我们的 been 对象, listUser 是方法名
2 . 然后看我们括号内的就是我们访问的 URL 地址。再看一下个
@GET("group/{id}/users") Call<List<User>> listUser (@Path("id") int groupId);
大括号包含的 id 可以理解为一个变量 = @Path("id") int groupId 等号后面的意思就是 把 groupId 这个参数赋值给我们的 id
@GET("group/{id}/users") Call<List<User>> listUser (@Path("id") int groupId, @QueryMap Map<String, String> options);
第一个参数同上,第二个参数就好理解了 URL 要带好多参数 每一个参数的 KEY 和 VALUE 都在我们的 Map 里
@Headers("Cache-Control: max-age=640000") @GET("widget/list") Call<List<Widget>> widgetList(); //添加我们的 header @Headers({ "Accept: application/vnd.github.v3.full+json", "User-Agent: Retrofit-Sample-App" }) @GET("users/{username}") Call<User> getUser(@Path("username") String username);
是不是很强大呢 当然还有很多了比如上传文件什么的这里只讲最基本的 用法其它的需要大家自己查文档了。
第三步 创建一个 Retrofit 对象:
Retrofit retrofit = new Retrofit.Builder()
//这个 URL 就是和我们接口的 URL 拼接在一起的
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
//再用这个 Retrofit 对象创建一个 GitHubService 对象:
//GitHubService.class 是我们的接口名字
GitHubService service = retrofit.create(GitHubService.class); //拿到接口对象然后调用接口里的方法 Call<List<User>> call = service.listRepos("octocat");
//最后你就可以用这个 Githb 对象获得数据了: call.enqueue(new Callback<List<User>>() { @Override public void onResponse(Call<List<User>> call,Response<List<User>> response) { } @Override public void onFailure(Call<List<User>> call, Throwable throwable) { } });
注意:
URL 的定义方式
注意: URL 的定义方式 public interface GitHubService { @POST("user") Call<User> login(); } public void getUrl() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http:// atguigu.com /base/home") .addConverterFactory(GsonConverterFactory.create()) .build(); } //最后的 url 是 http:// atguigu.com /base/user public interface GitHubService { @POST("user") Call<User> login(); } public void getUrl () { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://atguigu.com/base/home/") .addConverterFactory(GsonConverterFactory.create()) .build(); } //最后的 url 是 http://atguigu.com/base/home/user public interface GitHubService { @POST("/user") Call<User> login(); } public void getUrl() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://atguigu.com/base/home/") .addConverterFactory(GsonConverterFactory.create()) .build(); } //最后的 url 是 http://atguigu.com/user
原文:https://www.cnblogs.com/yanglanwan/p/11291556.html