標籤:
一,介紹
Retrofit將你的http介面API轉換成項目中的一個java的介面。
public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user);}
Retrofit會自動為上面的Service產生一個實作類別。
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .build();GitHubService service = retrofit.create(GitHubService.class);
每次調用的時候,建立的介面的實作類別會產生一個非同步或者同步的http請求到遠端web伺服器上面。
Call<List<Repo>> repos = service.listRepos("octocat");
使用註解的方式來描述http請求: 1,支援url參數和查詢參數 2,對象轉換成請求體,即對json對象的支援 3,多種請求體,檔案等也支援(翻譯的好土氣呀。。。)
二,API聲明
使用介面上的方法註解和請求參數來說明一個請求時如何被處理的。
三,要求方法
每個方法都必須有一個http註解來提供請求請求和相關聯的URL。這裡有五種支援的註解形式:GET,POST,PUT,DLETE,HEAD。相關的請求URL放在請求註解中。
@GET("users/list")
同時,你也可以直接在URL中提供請求參數:
@GET("users/list?sort=desc")
四,URL操作
請求參數能被動態更新---by方法中的預留位置。一個請求塊是用’{}‘——這個符號包圍的。一個對應的參數必須被@Path註解,並且使用相同的參數名字。
@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId);
請求參數也能被添加:
@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);
例如,下面使用一個map來做栗子:
@GET("group/{id}/users")Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);
翻譯了一部分,感覺上面的東西好像是外星人寫的。。。寶寶會繼續更的!希望能忍著翻譯完,更希望看過的人不要打我。
Retrofit——A type-safe HTTP client for Android and Java(The first part)