Retrofit注解

1. 注解类型

请添加图片描述

Retrofit路径结合的规则

2. 网络请求方法

2.1 Get请求

完整地址:http://mock-api.com/2vKVbXK8.mock/getUserInfo?id=userid

2.1.1 @Query

创建Retrofit实例必须传入baseurl(http://mock-api.com/2vKVbXK8.mock/),在@GET("getUserInfo")注解中的getUserInfo才是需要访问的地址。?后面的是需要传入的参数,使用@Query注解。

?形式拼接一个参数这种格式时,就使用@Query注解,该注解就是在getUserInfo后面添加?,并且以id=传来的参数userId的形式拼接url

private Retrofit retrofit;
retrofit = new Retrofit.Builder().baseUrl("http://mock-api.com/2vKVbXK8.mock/").addConverterFactory(GsonConverterFactory.create()) //返回的Json数据进行解析.build();public interface GetApi {/*** 获取用户信息* @return* @Query 注解*/@GET("getUserInfo")Call<UserInfo> getUserInfo(@Query("id") String userId);}

# 2.1.2 @QueryMap

完整地址:http://mock-api.com/2vKVbXK8.mock/api/getArticalInfo?id=405&page=1

   @GET("api/getArticalInfo")fun getArticalInfo(@QueryMap params: Map<String, String>): Call<Info>val params = HashMap<String, String>()params.put("id", "321")params.put("page", "2")api.getArticalInfo(params).enqueue(object : Callback<Info> {override fun onResponse(call: Call<Info>, response: Response<Info>) {TODO("Not yet implemented")}override fun onFailure(call: Call<Info>, t: Throwable) {TODO("Not yet implemented")}})

也可以一个个传递参数

    @GET("api/getArticalInfo")fun getArticalInfoSp(@Query("id") id: String, @Query("page") page: String): Call<Info>

2.1.3 @Path

完整地址:

  1. http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/1/data
  2. http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/2/data

当要访问的地址由某个参数动态拼接而成时,使用@Path注解,实例中param这里具体填入的内容是后面调用该方法时传入的参数

    @GET("api/getDynamicInfo/{param}/data")fun getDynamicInfo(@Path("param") param: Int): Call<ResponseBody>

更改baseurl可以使用如下注解:

    @GET("{url}/api/rand.music")fun getJsonDataM(@Path(value = "url", encoded = true) url: String,@Query("sort") sort: String,@Query("format") format: String): Call<Data<Info>>//传入BaseUrlval callData = api.getJsonDataM("https://api.uomg.com/", "新歌榜", "json")

2.1.4 @Url

当要访问的地址不只是动态的变几个参数,而是整个地址都要变化,甚至是基类地址也要变化时,这种动态地址就要用到@Url注解。

    @GETfun getDynamicInfoUrl(@Url url: String): Call<ResponseBody>

2.1.5 @Headers(“”)

静态添加头部信息:包含添加单个头部、添加多个头部。通过@Headers(“”)注解,内部以key:value的方式填写内容

访问地址: http://mock-api.com/2vKVbXK8.mock/api/staticHeaderInfo

静态添加单个或多个头部

    @Headers("version:1.1")@GET("api/staticHeaderInfo")fun getStaticHeadersInfo()@Headers("version:1.1", "type:android")@GET("api/staticHeaderInfo")fun getStaticMoreHeadersInfo()

2.1.6 @Header

动态添加单个头部信息

    @GET("api/dynamicHeadersInfo")fun getDynamicHeaderInfo(@Header("version") version: String?): Call<ResponseBody?>?

2.1.7 @HeaderMap

动态添加多个头部信息, 使用方法和QueryMap一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

港科夜闻|香港科大(广州)与特斯联共建研究中心,打造国际领先的创新联合体...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大(广州)与特斯联共建研究中心&#xff0c;打造国际领先的创新联合体。6月27日&#xff0c;“数字世界”联合研究中心正式揭牌成立&#xff0c;这个由香港科大(广州)与特斯联共同打造的研究中心&#xff0c;旨在推…

Chrome 插件开发覆写xhr请求

这几天搞chrome谷歌浏览器插件遇到个问题 我想拦截网页请求&#xff0c;并把数据传递到下一个子窗口。获取responsebody内容 background.js 单纯靠sendmessage实现不了通讯 chrome.runtime.sendMessage({data: e.data.responseText,type:ajaxResponse}); 最开始的时候想用chr…

qt QSqlRelationalTableModel 详解

背景知识&#xff1a; Qt SQL的API分为不同层&#xff1a; 驱动层 驱动层 对于QT是基于C来实现的框架&#xff0c;该层主要包括QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorbase、QSqlDriverPlugin and QSqlResult。这一层提供了特定数据库和SQL API层之间的底层桥梁…

【Jvm】Java类加载机制是什么?

文章目录 一、目标&#xff1a;二、原理 &#xff08;类的加载过程及其最终产品&#xff09;三、过程&#xff08;类的生命周期&#xff09;3.1、加载3.2、校验3.3、准备3.4、解析3.5、初始化 四、类加载器五、双亲委派机制 一、目标&#xff1a; 什么是类的加载&#xff1f;类…

VueX笔记

vuex是vue的一个插件&#xff0c;是一种组间通信的方式&#xff0c;整个项目可以共享数据和方法 安装&#xff1a; npm i vuex3 如上图所示&#xff0c;如果需求非常简单&#xff0c;我们就可以绕过dispatch方法&#xff0c;直接去调用commit方法 dispatch方法用于编写业务代…

短视频seo矩阵+抖音小程序SaaS源码开发部署

一、抖音小程序技术开发和调试&#xff1a; }$type_list_single array_column($type_list,title,type);$this->output[now_type] $type;$this->output[type_list] $type_list;$this->output[type_list_single] $type_list_single;//获取素材组合信息$pailie_m…

【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类

之前学习了视图集里运用序列化器进行序列化和反序列化操作&#xff0c;定义序列化器类&#xff0c;需要继承Serializer基类或者Serializer的子类&#xff1b; 这次我们将学习如何自定义校验器、如何进行单字段或者多字段校验&#xff0c;最后初步使用模型序列化器 一、自定义…

YOLOv8训练和预测

目录 1.源码下载 2.环境配置 3. 数据集准备 4.训练配置 5.训练时遇到的错误 1.源码下载 GitHub - ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > CoreML > TFLite 2.环境配置 运行环境需要的包和YOLOv5/v7一样&#xff0c;这里不…

建立时间保持时间、亚稳态

2.1建立时间和保持时间 2.1.1 D触发器的结构&#xff08;两个电平触发的D触发器&#xff09; 沿触发的触发器也叫主从触发器&#xff0c;内部是由两个电平触发的D触发器构成的上升沿是由低电平变成高电平 低电平&#xff1a;FF1导通&#xff0c;数据从D到G1&#xff0c;建立时…

CDH yarn Fair 队列最大资源使用限制,任务无法提交

一、问题背景描述 1.任务提交异常日志 2023-06-29 15:48:20,877 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the requested resources are available in the YARN cluster 2023-06-29 15:48:21,129 IN…

考研算法32天:桶排 【桶排序】

算法介绍 桶排 举个例子&#xff0c;一个数组中的数是&#xff1a;4 1 2 3 5&#xff0c; 然后桶排的顺序是&#xff1a;将每个数应该在的下标算出来&#xff0c;咋算呢&#xff1f;这我们就得考虑两种情况&#xff1a;假设我们设现在这个需要找到自己在数组里位置的数是x。…

掌握Python文件操作:从基础到高阶的全方位探索

在本篇博客中&#xff0c;我们将全面、深入地探讨Python中的文件操作。文件操作在Python编程中是不可或缺的一部分&#xff0c;它包含了打开、读取、写入和关闭文件等各种操作。我们将从基础的文件操作讲解到高级的文件处理技巧&#xff0c;以及如何优雅地使用Python进行文件操…