综述
归纳一下Retrofit2实践和问题
注解类的使用
@ HTTP,@Path
@HTTP(method = "GET",path="topics/{id}",hasBody = false)
Call<ResponseBody> getopics(@Path("id") String id);
@Header,@Headers,@HeaderMap
@Headers({
"User-Agent:android",
"Cache-Control:public,max-age=120",
})
@GET("/topics/{id}")
Call<ResponseBody> postExample(@HeaderMap Map map,@Header("token") String token,@Path("id") String id);
@ FormUrlEncoded,@Field,@ FieldMap 配置参数
@FormUrlEncoded
@POST("/topics")
Call<ResponseBody> postExample(@FieldMap Map map, @Field("key") String value,@Body User user );
@Multipart,@PartMap,@Part 文件表单上传
@Multipart
@POST("mobile/upload")
Call<ResponseBody> upload(@PartMap Map<String, MultipartBody.Part> map,@Part MultipartBody.Part file);
@Query @QueryMap @QueryName 配置查询
@GET("/topics")
Call<ResponseBody> getopics(@Query("id") String id, @QueryMap Map map);
@Url , @Streaming 文件下载等
@Streaming
@GET
Call<ResponseBody> downloadFileByDynamicUrlAsync(@Url String downloadUrl);
配置公共参数
2.x版本是通过自定义OkHttp拦截器实现
Retrofit2 — 参数拦截器
配置Cookie参数
建议使用OkHttp的cookie管理
OkHttp3实现Cookies管理及持久化