码迷,mamicode.com
首页 > 其他好文 > 详细

Retrofit的使用

时间:2019-08-03 00:48:23      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:fail   list   llb   ace   col   支持   它的   cto   key   

概述
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
 

 

Retrofit的使用

标签:fail   list   llb   ace   col   支持   它的   cto   key   

原文地址:https://www.cnblogs.com/yanglanwan/p/11291556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!