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);
}
网友评论