Android 網路框架Retrofit的使用和解析
使用步驟:
步驟1:定義介面
public interface GitHubService {
/*
*Post多引數Map
*Post方法 "getnews" 為路徑
* mapPost方法名
* @FieldMap多個請求引數
* newsPojo 接受的實體類
* @FormUrlEncoded將會自動將請求引數的型別調整為application/x-www-form-urlencoded 不能用於Get請求
*/
@FormUrlEncoded
@POST("getnews")
Call<newsPojo> mapPost(@FieldMap Map<String,Object> map);
/*
*Post多引數
*Post方法 "getnews" 為路徑
* singlePost方法名
* @Field多個請求引數
* newsPojo 接受的實體類
* @FormUrlEncoded將會自動將請求引數的型別調整為application/x-www-form-urlencoded 不能用於Get請求
*/
@FormUrlEncoded
@POST("getnews")
Call<newsPojo> singlePost(@Field("appey") String appkey,@Field("lasttime") String lasttime);
/*
*Post 實體類引數
*所有引數統一封裝到類中
*/
@FormUrlEncoded
@POST("getnews")
Call<newsPojo> bodyPost(@Body newsPaper news);
/*
*單引數Get方法
*/
@GET("getnews")
Call<newsPojo> singleGet(@Query("appkey") String appkey,@Query("appkey1") String appkey1);
/*
*多引數Get方法
*/
@GET("getnews")
Call<newsPojo> mapGet(@QueryMap Map<String, String> options);
/*
*List集合引數Get方法
*/
@GET("getnews")
Call<newsPojo> ListGet(@Query("user")List<String> list);
/*
*相對路徑引數地址 @Path
* List<newsPaper> 接受的集合
* @Path可以用於任何請求方式,例如Post、Put等。
*/
@GET("group/{id}/users")
Call<List<newsPaper>> groupList(@Path("id") int groupId, @Query("sort") String sort);
/*
**單個檔案上傳
*/
@Multipart
@PUT("upload") // @POST("upload")
Call<ResponseBody> updateFile(@Part("description") RequestBody description ,@Part MultipartBody.Part file);
@Multipart
@POST("upload")
Call<ResponseBody> uploadMultipleFiles(@Part("description") RequestBody description,
@Part MultipartBody.Part file1,
@Part MultipartBody.Part file2);
/*
*新增自定義的header
* 靜態方法
*/
@Headers("Cache-Control: max-age=640000")
@GET("getnews")
Call<newsPojo> headerGet(@QueryMap Map<String, String> options);
/*
*靜態 多個定義
*/
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<newsPaper> getUser(@Path("username") String username);
/*
*動態方法
*/
@GET("getnews")
Call<newsPojo> headNews(@Header("Content-Range") String contentRange, @Query("q") String name);
/*
*Post提交Json引數
* RequestBody 為Json、等資料
*/
@Headers({"Content-Type: application/json","Accept: application/json"})//需要新增頭
@POST("user")
Call<newsPaper> postJson(@Body RequestBody json);//傳入的引數為RequestBody
}
呼叫:
//步驟1
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.80.2:8080")
.addConverterFactory(GsonConverterFactory.create()) //資料轉換方式 GsonConverterFactory.create() Gson解析
.build();
//步驟2
GitHubService service = retrofit.create(GitHubService.class);
//步驟3 呼叫請求方法,並得到Call例項
Call<newsPojo> call = service.singlePost("appkey","0");
//步驟4 同步請求
try {
newsPojo response = call.execute().body();
} catch (IOException e) {
e.printStackTrace();
}
//步驟4 非同步請求
call.enqueue(new Callback<newsPojo>() {
@Override
public void onResponse(Call<newsPojo> call, Response<newsPojo> response) {
//請求成功返回的結果
System.out.println("返回資料"+response.body().getReason());
}
@Override
public void onFailure(Call<newsPojo> call, Throwable t) {
}
});
//步驟1 Post提交Json資料
Retrofit retrofitJson = new Retrofit.Builder()
.baseUrl("http://192.168.80.2:8080/fagagagag")
.addConverterFactory(GsonConverterFactory.create())
.build();
//步驟2 Post提交Json資料
GitHubService serviceJson = retrofit.create(GitHubService.class);
//步驟3 Post提交Json資料
newsPaper pojo = new newsPaper();
Gson gson=new Gson();
String json= gson.toJson(pojo);
RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),json);
//步驟4 Post提交Json資料
Call<newsPaper> callJson = serviceJson.postJson(body);
//步驟5 請求
callJson.enqueue(new Callback<newsPaper>() {
@Override
public void onResponse(Call<newsPaper> call, Response<newsPaper> response) {
}
@Override
public void onFailure(Call<newsPaper> call, Throwable t) {
}
});
}
相關文章
- Android 網路框架 Retrofit 原始碼解析Android框架原始碼
- 配置Retrofit網路框架及其使用框架
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android開源網路框架Retrofit(入門篇)Android框架
- Retrofit網路框架介紹框架
- Android中Retrofit框架的基礎使用(請求資料並解析)Android框架
- Android RxJava2+Retrofit2搭建網路請求框架AndroidRxJava框架
- Retrofit和OkHttp實現 Android網路快取HTTPAndroid快取
- Retrofit網路請求原始碼解析原始碼
- Android Retrofit原始碼解析:都能看懂的Retrofit使用詳解Android原始碼
- Android框架第(五)篇---Retrofit基本使用Android框架
- Retrofit2.0+網路框架HTTP實戰框架HTTP
- Retrofit原始碼解析之網路請求原始碼
- retrofit網路請求框架的地址及方法地址框架
- Android Retrofit的使用Android
- Android Retrofit原始碼解析Android原始碼
- Android技能樹 — 網路小結(7)之 Retrofit原始碼詳細解析Android原始碼
- Android網路程式設計:Retrofit原始碼解析Android程式設計原始碼
- Retrofit2使用方式和原始碼解析原始碼
- 網路元件 基於Retrofit2+RxJava2+GSON/Fastjson的網路框架元件RxJavaASTJSON框架
- 使用retrofit進行網路請求
- [Android] Retrofit原始碼:流程解析Android原始碼
- Android使用Kotlin+Retrofit+Rxjava實現簡單的網路請求AndroidKotlinRxJava
- 快速Android開發系列網路篇之RetrofitAndroid
- 網路請求框架之Retrofit2.0基本講解框架
- Retrofit + Kotlin + MVVM 的網路請求框架的封裝嘗試KotlinMVVM框架封裝
- 使用Retrofit+RxJava實現網路請求RxJava
- Android中Retrofit的封裝使用Android封裝
- 基於retrofit的網路框架的終極封裝(二)-與retrofit的對接與解耦,以及遇到的坑框架封裝解耦
- Andriod 網路框架 OkHttp 原始碼解析框架HTTP原始碼
- Android進階必學retrofit原始碼解析Android原始碼
- Android小知識-剖析Retrofit中網路請求的兩種方式Android
- Android中用Kotlin Coroutine(協程)和Retrofit進行網路請求和取消請求AndroidKotlin
- 輕鬆搞定Retrofit不同網路請求方式的請求引數配置,Retrofit常用註解的使用
- 分分鐘使用Retrofit+Rxjava實現網路請求RxJava
- Android 網路框架 OKHttp 學習Android框架HTTP
- RxJava + Retrofit完成網路請求RxJava
- Android專案框架搭建:mvp+retrofit+rxjava+rxbusAndroid框架MVPRxJava