導包
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(): 新增一個請求頭,有重名的將會覆蓋
基本使用
-
建立請求方法
public interface RequestService { @GET("users/{user}/repos") Observable<RequestResult> getDatas(@Path("user") String user, @Query("key") String value); } 複製程式碼
-
建立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(); 複製程式碼
-
建立請求Api
RequestService requestService = retrofit.create(RequestService.class); 複製程式碼
-
發起請求
Observable<RequestResult> observable = requestService.getDatas(user, value); observable.subscribe(Subscriber)......複製程式碼