Retrofit中的注解

一、Retrofit中的注解有那些?

  • 方法注解:@GET ,@POST,@PUT,@DELETE,@PATH,@HEAD,@OPTIONS,@HTTP
  • 标记注解:@FormUrlEncoded,@Multpart,@Streaming
  • 参数注解:@Query,@QueryMap,@Body,@Field,@FieldMap,@Part,@PartMap
  • 其他注解:@path,@Header,@Headers,@Uri

二、了解方法注解@HTTP

@HTTP注解的作用是可以让我们自己自定义这次接口的请求方式。

  @HTTP(method = "GET", path = "get", hasBody = false)
    @FormUrlEncoded
    Call<ResponseBody> http(@Field("userName") String userName, @Field("password") String pwd);

参数method:使用http注解时必须要指定method,method如果是POST就会执行http方法执行post请求,method如果指定GET就会执行http方法执行get请求。

参数书path:指定path,就需要把指定请求的接口的地址传入

参数hasBody:指定hasBody,就是请求体。post请求有请求体就指定hasBody = true。get请求没有请求体就指定haBody = false。

三、了解参数注解@Body

使用@Body注解在接口类对象中的定义

    @POST("post")
    Call<ResponseBody> postBody(@Body RequestBody body);//自己指定requestBody

测试代码

public class AnnotationUnitTest {
     Retrofit retrofit = new Retrofit.Builder().baseUrl("http://www.httpbin.org/").build();//创建retrofit对象

     HttpbinService httpbinService = retrofit.create(HttpbinService.class);//创建接口类对象,并且设置为全局变量。
    @Test
    public void bodyTest()throws IOException {
        FormBody formBody = new FormBody.Builder()
                .add("a", "1").add("b", "2").build();
        Response<ResponseBody> response = httpbinService.postBody(formBody).execute();
        System.out.println(response.body().string());
    }
}

测试结果

四、其他注解中的@path注解

在接口类对象中的使用

    @POST("{id}")
    Call<ResponseBody> pathInPath(@Path("id") String path);//@path注解作用于参数部分,意思是id=path帮我们替换掉@POST注解里面的参数

@path注解作用于参数部分,意思是{id}里面是id会被@path中的id替换掉替换成参数path

测试代码:

    @Test
    public void pathTest() throws IOException {
        //实际上请求到的是https://www。httpbin.org/post
        Response<ResponseBody> response = httpbinService.pathInPath("post").execute();
        System.out.println(response.body().string());
    }

测试结果:

可以看到请求的url是http://www.httpbin.org/post,使用的是post请求

五、那么我们尝试使用@path注解调用post请求,并且传递用户名和密码两个参数

在接口类对象中的使用

@POST("{id}")
    @FormUrlEncoded
    Call<ResponseBody> pathInPath(@Path("id") String path,@Field("userName") String userName, @Field("password") String pwd);//@path注解作用于参数部分,意思是id=path帮我们替换掉@POST注解里面的参数

测试代码

    @Test
    public void pathTest() throws IOException {
        //实际上请求到的是https://www。httpbin.org/post
        Response<ResponseBody> response = httpbinService.pathInPath("post","Anglin","rssqzqyp").execute();
        System.out.println(response.body().string());
    }

测试结果

六、其他注解中的@Header注解

@Header是用来设置请求头的

在接口类对象中的使用

 @POST("{id}")
    @FormUrlEncoded
    Call<ResponseBody> pathInPath(@Path("id") String path, @Header("os")String os, @Field("userName") String userName, @Field("password") String pwd);//@path注解作用于参数部分,意思是id=path帮我们替换掉@POST注解里面的参数

测试代码

   @Test
    public void pathTest() throws IOException {
        //实际上请求到的是https://www。httpbin.org/post
        Response<ResponseBody> response = httpbinService.pathInPath("post","Android","Anglin","rssqzqyp").execute();
        System.out.println(response.body().string());
    }

运行结果

七、其他注解中的@Headers注解

@Headers是添加多个请求头或者写一个请求头都可以,写多个要用花括号{}

在接口类对象中的使用

    @Headers({"os:amdroid","version:1.0"})
    @POST("post")
    Call<ResponseBody> postWithHeaders();

测试代码

    @Test
    public void headersTest() throws IOException {
        Call<ResponseBody> reponse = httpbinService.postWithHeaders();
        System.out.println(reponse.execute().body().string());
    }

测试结果

可以看到我们已经成功添加了请求头平台和版本号。

八、其他注解中的@Url

@url注解作用于参数中,作用是指定完整的http地址,不像之前的注解还要自己进行拼接。

在接口类对象中的使用

   @POST
    Call<ResponseBody> postUrl(@Url String url);

测试代码

   @Test
    public void urlTest() throws IOException {
        Response<ResponseBody> response = httpbinService.postUrl("http://www.httpbin.org/post").execute();
        System.out.println(response.body().string());
    }

测试结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

liunx java 生成图片 中文显示不出来

使用java 生成图片,在图片上打的文字水印显示为一个方框,这种情况的原因,一般是liunx系统或者docker容器内,没有你在打文字水印时选择的字体 解决办法,先找一个免费的字体,比如 Alibaba-PuHuiTi-Regular.otf 然后使用字体 File newFileT new File("Alibaba-PuHuiTi-Re…

pytorch环境下安装node2vec

1.刚开始直接pip install 出错 看到是在安gensim时候出错 2.单独安gensim&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到合适的版本&#xff0c;cp36就是python3.6&#xff0c;下载以后放在 3.

Android关于杀掉进程的方案

《风波莫听穿林打叶声》—— 苏轼 〔宋代〕 三月七日&#xff0c;沙湖道中遇雨&#xff0c;雨具先去&#xff0c;同行皆狼狈&#xff0c;余独不觉。已而遂晴&#xff0c;故作此词。 莫听穿林打叶声&#xff0c;何妨吟啸且徐行。 竹杖芒鞋轻胜马&#xff0c;谁怕&#xff1f;一蓑…

开放远程访问MySQL的权限

访问远程数据库时&#xff0c;产生Access denied for user ‘root‘‘xxx.xxx.xxx.xxx‘ (using password: YES)异常的解决办法 一. 异常现象 我编写了一个SpringBoot项目&#xff0c;项目中连接的数据库服务器地址是192.168.87.107&#xff0c;然后打包生成了对应的jar包&am…

Flutter应用程序的加固原理

在移动应用开发中&#xff0c;Flutter已经成为一种非常流行的技术选项&#xff0c;可以同时在Android和iOS平台上构建高性能、高质量的移动应用程序。但是&#xff0c;由于其跨平台特性&#xff0c;Flutter应用程序也面临着一些安全风险&#xff0c;例如反编译、代码泄露、数据…

【Openstack Train安装】九、Nova安装

Nova是OpenStack中最核心的组件&#xff0c;它负责根据需求提供虚拟机服务并管理虚拟机生命周期&#xff0c;包括虚拟机创建、虚拟机调度和热迁移等。 Nova的子组件包括nova-api、nova-compute、nova-scheduler、nova-conductor、nova-db、nova-console等等。 本文介绍Nova安装…

Windows11编译Hadoop3.3.6源码

由于https://github.com/kontext-tech/winutils还未发布3.3.6版本&#xff0c;因此尝试源码编译 目录 环境和安装包准备&#xff0c;见2zlib编译方法一&#xff1a;方法二&#xff1a; 配置文件更改1. maven阿里云镜像2. Node版本3. 越过Javadoc检查 编译HadoopError,其他报错…

每日一题:LeetCode-283. 移动零

每日一题系列&#xff08;day 08&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

一种使用热成像和自动编码器和 3D-CNN 模型堆叠集成进行跌倒检测的新方法

A Novel Approach for Fall Detection Using Thermal Imaging and a Stacking Ensemble of Autoencoder and 3D-CNN Models A Novel Approach for Fall Detection Using Thermal Imaging and a Stacking Ensemble of Autoencoder and 3D-CNN Models:一种使用热成像和自动编码器…

linux用户管理_用户和组

2 用户管理 2.1 用户和组的基本概念和作用 2.1.1 账户实质 账户实质就是一个用户在系统上的标识&#xff0c;系统依据账户ID来区分每个用户的文件、进程、任务&#xff0c;给每个用户提供特定的工作关键&#xff08;如用户的工作目录、SHELL版本以及环境配置等&#xff09;&…

ubuntu终端代理配置

ubuntu浏览器的无需手动设置,主要解决在终端中的配置问题,按照下面配置后可能会ping不通一些ip,但wget/git都是可以的,具体原因以后再分析 查找端口 首先要找到自己代理对应的HTTP端口,以QV2ray软件作为示例,我为8889 手动配置 # 配置系统proxy export http_proxy=1…

怎么一键批量转换PDF/图片为Excel、Word,从而提高工作效率?

在处理大量PDF、图片文件时&#xff0c;我们往往需要将这些文件转换成Word或Excel格式以方便编辑和统计分析。此时&#xff0c;金鸣表格文字识别大师这款工具可以发挥巨大作用。下面&#xff0c;我们就来探讨如何使用它进行批量转换&#xff0c;以实现高效处理。 一、准备工作…

flask中路由route根据字典ID展示部分内容,字典名展示全部内容

from flask import Flask, jsonify , request,render_template,app Flask(__name__)app.config[JSON_AS_ASCII] Falsebooks [{"id": 1, "name": 三国演义},{"id": 2, "name": 水浒传},{"id": 3, "name": 西游记…

太极拳的招式有哪些?

太极拳的招式有很多&#xff0c;下面列举一些常见的太极拳招式&#xff1a; 起势&#xff1a;太极拳的第一个动作&#xff0c;从预备姿势开始&#xff0c;身体慢慢放松&#xff0c;重心移至左腿&#xff0c;然后慢慢屈膝&#xff0c;上体屈从向前&#xff0c;双臂自然下垂。 野…

docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01

一、 为什么出现 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应…

【傻瓜级JS-DLL-WINCC-PLC交互】8.DLL读写WINCC连接的PLC数据

思路 JS-DLL-WINCC-PLC之间进行交互&#xff0c;思路&#xff0c;先用Visual Studio创建一个C#的DLL控件&#xff0c;然后这个控件里面嵌入浏览器组件&#xff0c;实现JS与DLL通信&#xff0c;然后DLL放入到WINCC里面的图形编辑器中&#xff0c;实现DLL与WINCC的通信。然后PLC与…

MacBook macOs安装RabbitMQ【超详细图解】

目录 一、使用brew安装RabbitMQ 二、安装RabbitMQWeb管理界面 三、启动RabbitMQ 一、使用brew安装RabbitMQ 刚好项目要用到RabbitMQ&#xff0c;安装顺便写下安装步骤记录一下以备用 使用brew命令安装&#xff0c;一般Mac会自带这个命令&#xff0c;如没有&#xff0c;…

护眼灯对眼睛有好处吗?考公护眼台灯推荐

根据国家卫健委发布的最新数据&#xff0c;目前我国儿童青少年近视率已经达到了相当高的水平。其中&#xff0c;小学生的视力问题占比接近40%&#xff0c;高中生和大学生的近视率则超过70%并且逐年上升。可以说10个学生里面就有7个学生入手一副眼镜。 为了避免这一现象的加深&a…

notepad++ 插件JSONView安装

1&#xff0c;前提 开发过程中经常需要处理json格式语句&#xff0c;需要对json数据格式化处理&#xff0c;因为使用的是虚拟机内开发&#xff0c;所以没法连接外网&#xff0c;只能在本地电脑下载插件后&#xff0c;然后上传到虚拟机中&#xff0c;进行安装使用。 2&#xf…