Retrofit的使用

Posted yanglanwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit的使用相关的知识,希望对你有一定的参考价值。

概述
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的使用的主要内容,如果未能解决你的问题,请参考以下文章

Retrofit的使用

Retrofit的使用

深度详解Retrofit2使用实践

深度详解Retrofit2使用实践

Android Retrofit的基本使用

Android Retrofit的基本使用