* 请求方式有:
* @Get
* @post
* @PUT
* @DELETE
* @HEAD
* @OPTIONS
* @HTTP (可用于替换上面所有的请求方式)
* <p>
* <p>
* 标记请求方法有:
* @FormUrlEncoded 表示请求是一个Form表单
* 每个键值对需要用@Filed来注解键名,随后的对象需要提供值。
* <p>
* <p>
* @Multipart 表示请求体是一个支持文件上传的Form表单
* 每个键值对需要用@Part来注解键名,随后的对象需要提供值。
* <p>
* <p>
* @Streaming 表示返回的数据以流的形式返回,适用于返回数据较大的场景
* (如果没有该注解,默认把数据全部载入内存,之后获取数据也是从内存中读取)
* <p>
* <p>
* 网络请求参数如下:
* @Headers 添加请求头,固定参数
* @Body 以 Post方式 传递 自定义数据类型 给服务器,也可以传递Map,相当于@Field,需要做处理
* FormBody.Builder builder = new FormBody.Builder();
* builder.add("key","value");
* <p>
* <p>
* <p>
* @Field以及@FieldMap 传递单个参数或者一个Map集合
* <p>
* <p>
* <p>
* @Part & @PartMap,提交文件,注意Map添加参数是,值为responseBody
* <p>
* <p>
* <p>
* @Query以及@QueryMap 用法与@Field相同
* <p>
* <p>
* <p>
* @Path 访问的API是:https://api.github.com/users/{user}/repos
* 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用)
* <p>
* <p>
* <p>
* @Url 当有URL注解时,@GET传入的URL就可以省略,当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供
*
*
*/
public interface RetrofitApi {
/**
* method:网络请求的方法(区分大小写)
* path:网络请求地址路径
* hasBody:是否有请求体
*/
@HTTP(method = "GET", path = "blog/id=8", hasBody = true)
Observable<LoginResponse> testHttp(@Body LoginRequest request);
@POST("/post")
Observable<LoginResponse> login(@Body LoginRequest request);
/**
* 添加请求头,不固定形式,参数需要传值
*
* @param plat 参数值
* @return 访问的API是:https://api.github.com/users/{user}/repos
* 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用)
*/
@POST("users/{user}/rew")
@FormUrlEncoded
Observable<LoginResponse> getUser(@Path("user") String user, @Header("plat") String plat, @Field("userName") String name, @Field("age") int age);
/**
* 添加Map集合请求参数
*
* @param map 当有URL注解时,@GET传入的URL就可以省略,当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供
* @return
*/
@POST
@FormUrlEncoded
Observable<LoginResponse> testFileMap(@Url String url, @FieldMap Map<String, String> map);
/**
* @param name {@link RequestBody}、{@link okhttp3.MultipartBody.Part} 、任意类型
* @param age 除 {@link okhttp3.MultipartBody.Part} 以外,
* 其它类型都必须带上表单字段({@link okhttp3.MultipartBody.Part} 中已经包含了表单字段的信息),
* @param file
* @return
*/
@POST("/asd")
@Multipart
Observable<LoginResponse> testPart(@Part("name") RequestBody name, @Part("age") RequestBody age, @Part MultipartBody.Part file);
/**
* 用于 @GET 方法的查询参数(Query = Url 中 ‘?’ 后面的 key-value)
* url = http://www.println.net/?cate=android,其中,Query = cate
*
* @param cate
* @return
*/
@GET
Observable<LoginResponse> useQuery(@Query("cate") String cate);
/**
* 表单形式上传文件,添加参数到RequestBody
*
* @param map
* @param file
* @return
*/
@POST("asds")
@Multipart
Observable<LoginResponse> testPartMap(@PartMap Map<String, RequestBody> map, @Part MultipartBody.Part file);
/**
* 添加固定参数的请求头
*
* @param request
* @param name
* @return
*/
@POST("/post")
@Headers("plat: 1")
@FormUrlEncoded
Observable<LoginResponse> testForm(@Body LoginRequest request, @Field("userName") String name);
@POST
Observable<RegisterResponse> register(@Body RegisterRequest request);
@POST
@Multipart
Observable<RegisterResponse> testMuilt(@Body RegisterRequest request, @Part("name") RequestBody name, @Part MultipartBody.Part file);
@POST
Observable<BookInfoResponse> getBookInfo(@Body BookInfoRequest request);
@POST
Observable<BookCommentResponse> getBookComment(@Body BookCommentRequest request);
Retrofit2.0使用总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 概述 随着Google对HttpClient 摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retr...
- 概述 随着Google对HttpClient 摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retr...
- 前言 在Android开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网...
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
- 你有没有发现自己被拉黑了,还不知道为什么? 1、不要被粉丝数量迷惑 粉丝数量只是一个数字,对你没多大用,别被...