Retrofit 注解使用
来源:互联网 发布:avast网络安全软件 编辑:程序博客网 时间:2024/05/22 09:44
method annotation 方法注解
@GET @POST @Multipart @FormUrlEncoded @Headers (@PUT/@DELETE/@PATCH/@HEAD 不经常使用所以省略)
@Get
① 不可以搭配 @FormUrlEncoded 和 @Multipart②可以搭配@Headers
@POST
① @FormUrlEncoded (普通表单上传) / @POST 搭配 @Multipart(带有文件上传)
②可以搭配@Headers
method parameter annotation 方法参数注解
参数注解包含如下:
@Url() @Path @query @queryName @QueryMap @Header @HeaderMap @Field @FieldMap @Part @PartMap @Body
@Url
① 支持 @POST @GET
② 一个方法中最多有一个@Url注解
③ 方法中不能和@Path 同时使用 , 方法中同时使用@Query 参数必须在@Url之后
④ 如果方法引用了@GET 或者 @POST,并且 @GET @POST 括号中的值不为 null ,同样不能使用@Url
⑤ @Url支持的传递参数类型:HttpUrl/String/URI 类型
示例:
@POSTCall<List<Contributor>> getTutorials(@Url String url);
@Path
① 支持 @POST @GET
② 方法中不能和@Url同时使用 , 方法中同时使用@Query 参数必须在@Path 之后,@GET @POST中必须声明相对路径
③ @Path括号中的值必须已经存在@GET 或者 @POST括号声明的相对路径中
示例:
@GET("/repos/{owner}/{repo}/contributors")Call<List<Contributor>> contributors(@Path("owner") String owner,@Path("repo") String repo);
contributor(“doudou”,”xxxx”) 结果 : /repos/doudou/xxxx/contributors
3.1 @Query
① 支持 @POST @GET
② 方法传入参数类型可以为 Iterable、数组、Object(一般Integer, Stirng)
③ 如果传递的value值为null,则 不会添加到相对路径中
示例:
@POSTCall<List<Contributor>> getTutorials(@Url String url,@Query("page") Integer page,@Query("order") String order,@Query("author") String author);
getTutorials(“/getlist”,1,null,”逗逗”)则路径为:/getlist?page=1&author=”逗逗”
3.2 @QueryName
① 支持 @POST @GET
② 方法传入参数类型可以为 Iterable、数组、Object(一般Integer, Stirng)
示例:
@POSTCall<List<Contributor>> getTutorials(@Url String url,@QueryName String author);
getTutorials(“/getlist”,”doudou”)则路径为:/getlist?doudou
3.3 @QueryMap
① 支持 @POST @GET
② map值中存储的键值对value不能为null,否则报错
示例:
@POST("/getlist")Call<List<Contributor>> getTutorials(@Url String url,@QueryMap HashMap<String,String> map);
HashMap<String, String> maps = new HashMap<>();maps.put("username", "jack");maps.put("password", "123456");getTutorials("/getlist",maps)则路径为:/getlist?username=jack&password=123456
4.1 @Header
① 支持 @POST @GET
② 具有相同名称的key不会相互覆盖,而是会照样添加到请求头中
③ value为null 不会添加到Header中
④ 如果 key 为 Content-Type 需要特殊注意:http://www.w3school.com.cn/media/media_mimeref.asp 查看支持类型
示例:
@Headers({* "X-Foo: Bar",* "X-Ping: Pong"* })@POST("/getlist")Call<List<Contributor>> getTutorials(@Header("test") String header,@QueryMap HashMap<String, String> map);
通过遍历Headers 结果如下:
11-29 11:44:12.104 12315-12315/com.myapplication E/xxx: X-Foo = Bar11-29 11:44:12.104 12315-12315/com.myapplication E/xxx: X-Ping = Pong11-29 11:44:12.104 12315-12315/com.myapplication E/xxx: Y-Foo = Bar11-29 11:44:12.104 12315-12315/com.myapplication E/xxx: Y-Ping = Pong
4.2 @HeadMap
① 支持 @POST @GET
② 具有相同名称的key不会相互覆盖,而是会照样添加到请求头中
③ @HeaderMap 中存储的任何一个key的value都不能为null,否则报错
5.1 @Field
① 支持 @POST
② 使用该注解必须声明 @FormUrlEncoded ,同时@FormUrlEncoded 也要求方法参数必须有@Field或者@FieldMap ,两者相互依赖,缺一不可
示例:
@FormUrlEncoded@POST("user")Call<Contributor> update(@Field("username") String username, @Field("name") String name);
5.2 @FieldMap
① 支持 @POST
② 使用该注解必须声明 @FormUrlEncoded ,同时@FormUrlEncoded 也要求方法参数必须有@Field或者@FieldMap ,两者相互依赖,缺一不可
③ map中存储的value值不能为null
示例:
@FormUrlEncoded@POST("user")Call<Contributor> update(@FieldMap HashMap<String,String> username);
6.1 @Part
① 支持 @POST
② 使用该注解必须声明 @Multipart ,同时@Multipart 也要求方法参数必须有@Part或者@PartMap,两者相互依赖,缺一不可
示例:
@Multipart@POST("user")Call<Contributor> delete(@Part String username, @Part("name") String name);
6.2 @PartMap
① 支持 @POST
② 使用该注解必须声明 @Multipart ,同时@Multipart 也要求方法参数必须有@Part或者@PartMap,两者相互依赖,缺一不可
③ map中存储的value值不能为null
@Body
① 支持 @POST
②该参数不能和 @FormUrlEncoded @Multipart 注解同时使用,那么 @Field @FieldMap @Part @PartMap 当然也就不能同时使用了
示例:
realNameAuth(@Body RequestBody params);
- Retrofit的注解使用
- Retrofit 注解使用
- Retrofit注解
- Retrofit网络请求参数注解,@Path、@Query、@QueryMap的使用
- Retrofit之Query注解
- Retrofit 注解字段说明
- Retrofit 注解 详解
- retrofit 注解含义
- Retrofit新手常用注解
- retrofit 注解学习
- Retrofit使用
- Retrofit使用
- Retrofit使用
- Retrofit使用
- Retrofit使用
- Retrofit使用
- Retrofit使用
- Retrofit 2.0 个注解详解
- 【视图】ABAP Views
- Elasticsearch中的9300端口的通。
- Servlet中response响应异常
- 异常 int() argument must be a string or a number, not 'ShopCar'
- Windows系统 QQ/Print Screen截图黑屏解决方案
- Retrofit 注解使用
- Mac 配置FFmpeg环境
- Texture packer在制作图集中的优化方法
- JAVA关键字之 break和continue
- shiro标签页点击报错: No SecurityManager accessible to the calling code...
- 博客初体验
- Vue学习记录-1-初步认识
- handler解析
- 趣图:IT 地狱中的这些锅,你占了哪些?