Retrofit使用方法全面總結
Retrofit-一個對Android和Java型別安全的HTTP客戶端
Retrofit把你的HTTP API變成了Java介面
public interface GitHubService {
@GET("users/{user}/repos")
Call> listRepos(@Path("user") String user);
}
retrofit生成GitHubService介面的一個實現
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("")
.build();
GitHubService service = retrofit.create(GitHubService.class);
每個GitHubService實現類獲得的Call物件都能實現一個對遠端伺服器的同步和一部訪問
Call> repos = service.listRepos("octocat");
1.URL引數的替換和查詢(query)
2.物件轉化成JSON請求
- Multipart請求和上傳
方法和引數的註釋表明了請求如何被執行
每一個方法都有一個請求註釋,代表了請求方式和相關的url。有五種基本的請求方式註釋:GET, POST, PUT, DELETE, and HEAD.
相關的連結在括號裡寫明瞭。
e.g.:
@GET("users/list")
//也可以寫明查詢引數
@GET("users/list?sort=desc")
請求的URL可以被動態的改變
可以用{id}和@path (“id”)實現動態替換,兩個id必須相同
@GET("group/{id}/users")
Call> groupList(@Path("id") int groupId);
查詢引數的動態替換
連結:group/{id}/users?sort = sort
e.g.:
@GET("group/{id}/users")
Call> groupList(@Path("id") int groupId, @Query("sort") String sort);
複雜的查詢引數用map實現
@GET("group/{id}/users")
Call> groupList(@Path("id") int groupId, @QueryMap Map options);
當請求體是物件的時候,可以用@body標籤
@POST("users/new")
Call createUser(@Body User user);
@FormUrlEncoded註釋用於表單資料的提交,@Field用於標識每個鍵值對
@FormUrlEncoded
@POST("user/edit")
Call updateUser(@Field("first_name") String first, @Field("last_name") String last);
Multipart請求是用@ Multipart註釋來標識的,每一部分的請求是 @Part標識
@Multipart
@PUT("user/photo")
Call updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description);
可以使用@Headers註釋設定一個靜態頭
@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call> widgetList();
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call getUser(@Path("username") String username);
在引數部分使用@Header進行動態頭的設定
@GET("user")
Call getUser(@Header("Authorization") String authorization)
在Android中,callBACK將被在主執行緒中執行,在Java中,將被在呼叫的執行緒執行。
CONVERTERS轉化器定製
常見的五種
Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
Simple XML: com.squareup.retrofit2:converter-simplexml
下面是一個GsonConverterFactory使用的例子
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("")
.addConverterFactory(GsonConverterFactory.create())
.build();
GitHubService service = retrofit.create(GitHubService.class);
你也可以自己定製。
com.squareup.retrofit2
compile 'com.squareup.retrofit2:retrofit:2.2.0'
Retrofit requires at minimum Java 7 or Android 2.3.
# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
相關文章
- Retrofit個人總結
- yield全面總結
- JNDI全面總結
- RAC 使用方法總結
- Flutter填坑全面總結Flutter
- LVM管理全面總結LVM
- Git和github使用方法總結Github
- SAP轉儲單全面總結
- C語言全面總結-3C語言
- mysql函式全面總結KSVMMySql函式
- JavaScript中textRange物件使用方法總結JavaScript物件
- 磁帶裝置使用方法總結
- Windows RocketMQ使用方法經驗總結WindowsMQ
- okHttp--Retrofit網路快取設定總結HTTP快取
- ORACLE常用結構和函式使用方法總結Oracle函式
- 很全面的vue面試題總結Vue面試題
- PHP超時處理全面總結PHP
- cookie和session的區別(全面總結)CookieSession
- 超全面的vue.js使用總結Vue.js
- Java 容器相關知識全面總結Java
- android開發之svg全面總結AndroidSVG
- 最全面的JavaScript除錯技巧總結JavaScript除錯
- Android藍芽開發全面總結Android藍芽
- STM32 外部中斷使用方法總結
- C 語言中 define 的全部使用方法總結
- casperjs中start方法的使用方法總結JS
- Qt訊號與槽使用方法最完整總結QT
- 微服務最全詳解(圖文全面總結)微服務
- 關於C++ const 的全面總結C++
- 非常全面的Linux知識點總結Linux
- Android Intent的幾種用法全面總結AndroidIntent
- Retrofit與LiveData結合LiveData
- [Oracle] dbms_metadata.get_ddl 的使用方法總結Oracle
- 全面總結: Golang 呼叫 C/C++,例子式教程GolangC++
- 負載均衡最全詳解(圖文全面總結)負載
- Hive常用效能優化方法實踐全面總結Hive優化
- 全面總結Android記憶體洩漏(下)Android記憶體
- 個人總結——全面的『Python編碼規範』Python