Retrofit基本使用

YuanchaoLi發表於2019-04-08

導包

api 'com.squareup.retrofit2:retrofit:2.5.0' //Retrofit2所需要的包
api 'com.squareup.retrofit2:converter-gson:2.5.0' //ConverterFactory的Gson依賴包,也可指定其他解析方式
api 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' //結合使用的rxjava2的依賴包

rxjava2的依賴包
api 'io.reactivex.rxjava2:rxandroid:2.1.0'
api 'io.reactivex.rxjava2:rxjava:2.2.6'
okHttp的依賴包
api 'com.squareup.okhttp3:okhttp:3.12.0'
Gson的依賴包
api 'com.google.code.gson:gson:2.8.5'
複製程式碼

引數註解

  • @GET(): 註解在方法上,表示get請求,括號內為請求url
  • @POST(): 註解在方法上,表示Post請求,括號內為請求url
  • @PUT(): Put請求
  • @DELETE(): Delete請求
  • @Query(): get請求時,註解在方法中,註解後括號中是鍵,跟在後面的是值,將會以key=value的方式拼接在url後面
  • @QueryMap:get請求時,如果引數很多,可以將引數整合到map集合,用此註解在方法中傳遞
  • @Field(): Post請求時,註解在方法中,註解後括號中是鍵,跟在後面的是值,將每一個請求引數都存放至請求體中
  • @FieldMap:Post請求時,如果引數很多,可以將引數整合到map集合,用此註解在方法中傳遞
  • @Body:若Post請求引數有多個,可統一封裝到一個類中,用此註解在方法中傳遞
  • @Path(): 註解在方法中,註解後括號中的是url上的佔位符,跟在後面的是填充到url佔位符上的字串
  • @FormUrlEncoded():用於Post請求,將會自動將請求引數的型別調整為application/x-www-form-urlencoded
  • @Multipart(): 用於Post請求,上傳
  • @Part(): 用於Post請求,註解在上傳的方法中,上傳的引數
  • @Headers(): 新增許多請求頭,括號內為請求頭內容
  • @Header(): 新增一個請求頭,有重名的將會覆蓋

基本使用

  1. 建立請求方法

     public interface RequestService {
     	@GET("users/{user}/repos")
     	Observable<RequestResult> getDatas(@Path("user") String user, @Query("key") String value);
     }
    複製程式碼
  2. 建立Retrofit例項

     OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(5, TimeUnit.SECONDS)
                 .readTimeout(5, TimeUnit.SECONDS)
                 .writeTimeout(5, TimeUnit.SECONDS)
                 .build();
    
     Retrofit retrofit = new Retrofit.Builder()
             .baseUrl("") //網路請求URL相對固定的地址
             .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //與rxjava聯合使用
             .addConverterFactory(GsonConverterFactory.create()) //gson解析返回值
             .client(okHttpClient) //使用OkHttp請求
             .build();
    複製程式碼
  3. 建立請求Api

     RequestService requestService = retrofit.create(RequestService.class);
    複製程式碼
  4. 發起請求

     Observable<RequestResult> observable = requestService.getDatas(user, value);
     observable.subscribe(Subscriber)......複製程式碼

相關文章