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