导包
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)......