不寫android原生大概已經1年半了,突然要用到Retrofit框架,突然蒙圈了,不知道從哪里開始。因此記錄下如何使用(⊙﹏⊙)b
因本文不是詳細介紹Retrofit框架,主要是介紹如何快速集成到項目用并使用,因此需要一定的Retroift基礎。
1.使用Retrofit
依賴
創建接收服務器返回數據的類
創建用于描述網絡請求的接口
創建Retrofit實例
創建請求接口實例
發送請求
處理返回數據
1.1 依賴
build.gradle文件中添加Retrofit2.0依賴,并根據項目需要進行轉換器的依賴添加。
Retrofit官方教程
compile 'com.squareup.retrofit2:retrofit:2.4.0'
//轉換器(選配)
//GSON
compile 'com.squareup.retrofit2:converter-gson:2.+'
//Jackson
compile 'com.squareup.retrofit2:converter-jackson:x.x.x'
//simplexml
compile 'com.squareup.retrofit2:converter-simplexml:x.x.x'
//Scalars (primitives, boxed, and String):
compile 'com.squareup.retrofit2:converter-scalars:x.x.x'
1.2 創建接收服務器返回數據的類
1.3 創建用于描述網絡請求的接口
public interface ApiService {
@GET("new/{id}")
Call<ResponseBody> getNew(@Path("id") int id);
}
1.4 創建Retrofit實例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:8081/")
...
.build();
1.5 創建請求接口實例
#通過Retrofit創建ApiService對象
ApiService service = retrofit.create(ApiService.class);
1.6 發送請求
#發送請求(接口調用)--支持同步和異步:execute 、enqueue
Call<ResponseBody> call = service.getNew(1);
//此處執行請求,和okhttp一樣,區別在于回調方法是在主線程執行
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
//TODO 該回調方法什么時候響應
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
1.7 處理返回數據
response.body()
相關文章鏈接:
Retrofit注解簡介