Android-MVVM之快速上手Retrofit

Android-MVVM之快速上手Retrofit

什么是Retrofit?

发请求用的,底层封装了okHttp

直接上代码

// Get请求
public interface Api {
    @GET("user")
    Call<ResponseBody> getData(@Query("id") int id);
}

// 需要注意的点:
// 1 @GET注解,即get请求
// 2 Call<ResponseBody> 是返回类型,ResponseBody是自己定义的实体类。
// 3 @Query 代码拼在URL后面的参数
// GET请求需要多个参数怎么办?
public interface Api {
    @GET("user")
    Call<ResponseBody> getData(@QueryMap Map<String, String> map);
}
// 1.使用@QueryMap,可以传递多个参数。
  Map<String, String> map = new HashMap<>();
  map.put("id", 1);
  map.put("name", "flx");
// POST	请求---表单提交
@FormUrlEncoded
@POST("user")
Call<ResponseBody> getData(@Field("id") String id);
// 1 @FormUrlEncoded:需要表单方式提交的时候使用这个注解
// POST	请求---表单提交,需要提交多个参数的时候怎么办
@FormUrlEncoded
@POST("user")
Call<ResponseBody> getData(@FieldMap("id") Map<String, String> map);
// 1.使用@FieldMap,可以传递多个参数。
  Map<String, String> map = new HashMap<>();
  map.put("id", 1);
  map.put("name", "flx");
// POST	请求---json提交
@POST("user")
Call<ResponseBody> getData(@Body RequestBody body);
// 切记:@Body注解不能与@FormUrlEncoded和@Multipart注解(后面说)同时使用
// 文件上传
@Multipart
@POST("user")
Call<ResponseBody> getData(@Part("name") RequestBody name, @Part MultipartBody.Part file);
// 1 @Multipart注解:代表可以使用文件上传。
// 2 @Part用于表单字段,适用于文件上传的情况。
// 3 @Part MultipartBody.Part(),需要三个参数。第一个参数:上传文件的key;第二个参数:文件名;第三个参数:RequestBody对象。
// 注意:文件对象的格式。MediaType.parse("image/png") 及MediaType.parse("multipart/form-data")等等。  


String name = "ABC"
RequestBody imgBody = RequestBody.create(MediaType.parse("image/png"), file);
//将文件转化为MultipartBody.Part
//第一个参数:上传文件的key;第二个参数:文件名;第三个参数:RequestBody对象
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", file.getName(), imgBody);
 
Call<ResponseBody> partDataCall = retrofit.create(Api.class).getData(name, filePart);
// 文件上传---需要多个参数怎么办?
@Multipart
@POST("user")
Call<ResponseBody> getData(@PartMap Map<String, MultipartBody.Part> map);
// 1.@PartMap 用于上传多个文件的注解

 RequestBody requestBody1 = RequestBody.create(MediaType.parse("image/png"), file1);
    RequestBody requestBody2 = RequestBody.create(MediaType.parse("image/png"), file2);
    MultipartBody.Part filePart1 = MultipartBody.Part.createFormData("file1", file1.getName(), requestBody1);
    MultipartBody.Part filePart2 = MultipartBody.Part.createFormData("file2", file2.getName(), requestBody2);
 
    Map<String,MultipartBody.Part> mapPart = new HashMap<>();
        mapPart.put("file1",filePart1);
        mapPart.put("file2",filePart2);
 
    Call<ResponseBody> partMapDataCall = retrofit.create(Api.class).getData(mapPart);
//@Header、@Headers,用于添加请求头,一个添加一个,一个添加多个,写法不同

 @GET("user")
 Call<ResponseBody> getData(@Header("token") String token);
 // 1. 添加一个请求头,写在参数里面

 @Headers({"phone-type:android", "version:1.1.1"})
 @GET("user/emails")
 Call<ResponseBody> getHeadersData();
// 1. 添加多个请求头,写在上面的注解里面。


// 上面的都是添加不固定的请求头,如果想添加固定的请求头,可以请求拦截再添加
// 请求占位符
 @GET("user/{id}")
 Call<ResponseBody> getData(@Query("name") String nameStr, @Path("id") int id);
// @Path 请求占位符
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了满足广大Android开发爱好者与从业者的学习需求,我们精心整理并上传了一份全面而实用的Android项目资源包。这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的学习平台。 一、文件手册 资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容深入浅出,既适合新手入门,也能为老手提供有价值的参考。 二、项目实战与练习 为了让学习者能够将理论知识与实践相结合,我们特别准备了项目实战与练习部分。这部分内容包含了多个精心设计的Android项目案例,从需求分析、设计思路到实现过程,都有详细的讲解和代码示例。学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的学习者进行练习。 三、Android开发工具集 在Android开发过程中,选择合适的工具能够大大提高开发效率。因此,我们整理了常用的Android开发工具集,包括开发工具、测试工具、性能优化工具等。这些工具都是经过我们精心筛选和测试的,能够帮助开发者们更加高效地进行Android开发工作。 总的来说,这份Android项目资源包是一份不可多得的学习资料,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。我们希望通过这份资源包,为广大Android开发爱好者与从业者提供一个更加便捷、高效的学习平台,共同推动Android开发领域的发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值