Retrofit的使用

概述
Retrofit 是一個類型安全的 REST 客戶端,Square 提供的開源產品。它能夠直接解析 JSON 數 據變成 JAVA 對象,甚至支持回調操做,處理不一樣的結果。 git

官方地址:http://square.github.io/retrofit/ 在官方地址中能夠下載 jar 包,也能夠在 AndroidStudio 中引入。 github

使用
1.首先咱們要定義一個接口json

public interface GitHubService { @GET("users/list?sort=desc") 
    Call<List<User>> listUser (@Path("user") String user); 
} 

 

下面講解一下這個接口api

1 . @GET 就是咱們的請求方式。主要有 GET, POST, PUT, DELETE, and HEAD    Call 是關鍵字, User 是咱們的 been 對象, listUser 是方法名安全

2 . 而後看咱們括號內的就是咱們訪問的 URL 地址。再看一下個 app

@GET("group/{id}/users") 
Call<List<User>> listUser (@Path("id") int groupId); 

大括號包含的 id 能夠理解爲一個變量  = @Path("id") int groupId 等號後面的意思就是  把 groupId 這個參數賦值給咱們的 id ide

@GET("group/{id}/users") 
Call<List<User>> listUser (@Path("id") int groupId, @QueryMap Map<String, String> options); 

第一個參數同上,第二個參數就好理解了 URL 要帶好多參數 每個參數的 KEY 和 VALUE 都在咱們的 Map 裏 ui

 

@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 對象:url

Retrofit retrofit = new Retrofit.Builder()
//這個 URL 就是和咱們接口的 URL 拼接在一塊兒的 
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();

//再用這個 Retrofit 對象建立一個 GitHubService 對象:spa

//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
相關文章
相關標籤/搜索