Retrofit 心得体会

2019-10-18  本文已影响0人  付小影子

Retrofit 是 Square公司开发的一款针对Android网络请求的框架。底层是基于OKhttp,更多使用运行时注解的方式提供功能

Retrofit的注解分类

http请求方法注解

GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, HTTP

标记类注解

FormUrlEncode :表明此次提交是表单请求
Multipart:上传文件,允许使用多个@part
Streaming:代表响应的数据以流的形式返回,如果不使用它,则默认会把全部数据加载到内存,所以下载大数据时需要加上这个注解

参数注解

header,headers :静态或者动态添加头部请求信息
Query,QueryMap:GET方法请求参数,单个参数或者集合形式的多个参数
Field,FieldMap:键值对的形式入Post请求参数,单个键值对 或者集合形式的多个参数
Body:以json字符串的形式 作为post请求参数(以键值对还是以字符串的形式入POST的请求,需要后台服务器配合)
Part,PartMap:上传文件,图片

各种方法使用

/**
 * @author 付影影
 * @desc
 * @date 2019/10/18
 */
public interface IpInterface {
    @GET("getIpInfo.php?ip = 59.108.54.37")
    Call<IpModel> getIpMsg();

    /**
     * 动态请求地址路径
     * @param path
     * @return
     */
    @GET("{path}/getIpInfo.php?ip = 59.108.54.37")
    Call<IpModel> getIpMsg2(@Path("path") String path);


    /**
     * 单个请求参数
     * @param ip
     * @return
     */
    @GET("getIpInfo.php")
    Call<IpModel> getIpMsg3(@Query("ip") String ip);


    /**
     * 多个请求参数
     * @param params
     * @return
     */
    @GET("getIpInfo.php")
    Call<IpModel> getIpMsg4(@QueryMap Map<String, String> params);


    /**
     * 静态 添加单个头部
     * @return
     */
    @GET("getIpInfo.php")
    @Headers("Accept-Encoding:application/json")
    Call<IpModel> addHeader();

    /**
     * 静态添加 多个头部
     * @return
     */
    @GET("getIpInfo.php")
    @Headers({"Accept-Encoding:application/json", "User-Agent:MoonRetrofit"})
    Call<IpModel> addHeader2();


    /**
     * 动态添加头部请求信息
     * @param location
     * @return
     */
    @GET("getIpInfo.php")
    Call<IpModel> addHeader3(@Header("Location") String location);


    /**
     * 单个键值对 post请求参数
     * @param ip
     * @return
     */
    @FormUrlEncoded
    @POST("getIpInfo.php")
    Call<IpModel> postIpMsg(@Field("ip") String ip);

    /**
     * 多个键值对 请求参数
     *  @FormUrlEncoded 表示这是个表单请求
     */
    @FormUrlEncoded
    @POST("getIpInfo.php")
    Call<IpModel> postIpMsg2(@FieldMap Map<String,String> params);

    /**
     * json 字符串形式 请求参数,retrofit会自动把user对象 转换为json字符串
     * @param user
     * @return
     */
    @POST("getIpInfo.php")
    Call<IpModel> postIpMsg3(@Body User user);


    /**
     * 单个文件上传
     *  @Multipart 表示 允许多个@part
     */
    @Multipart
    @POST("getIpInfo.php")
    Call<IpModel> postIpMsg4(@Part MultipartBody.Part photo, @Part("description")RequestBody desc);


    /**
     * 多个文件上传
     * @param photo
     * @param desc
     * @return
     */
    @Multipart
    @POST("getIpInfo.php")
    Call<IpModel> postIpMsg5(@PartMap Map<String,RequestBody> photo, @Part("description")RequestBody desc);
   
}
上一篇 下一篇

猜你喜欢

热点阅读