Retrofit初探——请求参数

Retrofit 注解参数详解 文章目录GET@Path@Query@QueryMapPOST@Bodyform表单1:@FormUrlEncodedform表单2:FormBody@Multipart上传文件 对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了。 下面分为GET、POST、DELETE还有PUT的请求,说明@Path、@Query、@QueryMap、@Body、@Field的用法。 添加依赖 implementation 'com.squareup.retrofit2:retrofit 阅读详情

0x00 请求参数

常见的Http请求,除了指定的请求地址,很多时候我们还需要加上一些请求参数,这些参数可能是固定的,也可能是动态添加的。在Retrofit中,我们该如何处理呢?这里以GET方式中添加请求参数为例。

0x01 固定请求参数

这里说的固定请求参数是指每次请求我们都在Url中添加相同的请求的参数。这种场景多出现在需要认证的情况,比如添加 Token 字段等。

在之前的文章中,我们有提到在构建OkHttpClient对象的时候使用过 Interceptor ,在 Interceptor 的逻辑中,我们会重新创建一个 Request 对象,在这个对象中我们可以传入一个 HttpUrl ,在这个对象中,我们可以传入一些需要的请求参数。通过之前对 Interceptor 了解,我们应该知道,这里做的操作是对所有的请求都有效的。这样就可以完成我们为每个请求添加固定请求参数的目的。代码如下:

OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public okhttp3.Response intercept(Chain chain) throws IOException {
                        Request original = chain.request();

                        HttpUrl originalHttpUrl = original.url();

                        HttpUrl url = originalHttpUrl
                                .newBuilder()
                                .addQueryParameter("token", "I_am_user_token")
                                .addQueryParameter("user_key", "I_am_user_user_key")
                                .build();

                        Request request = original
                                .newBuilder()
                                .url(url)
                                .build();

                        okhttp3.Response response = chain.proceed(request);
                        return response;
                    }
                })
                .build();

0x02 动态请求参数

这个指我们在不同的请求中添加不同过的请求参数。比如,在请求用户信息的接口中我们可能需要传入用户ID,在请求记录的接口中我们需要传入起止时间等。由于这样的参数是针对接口的,因此我们就需要在每一个接口做中处理。

  • @Query 添加一个请求参数

    // http://119.29.29.29/d?dn=ttdevs.vicp.com
    @GET("/d")
    public Call<ResponseBody> singleParams(@Query("dn") String domain);

    通过上面的方式,我们发出的请求就是:

    http://119.29.29.29/d?dn={domain}

  • @QueryMap 添加一组请求参数

    @GET("/record")
    public Call<ResponseBody> multiParams(@QueryMap(encoded = true) Map<String, String> options);

    上面我们发出的请求是:

    http://ttdevs.vicp.net/record?p1=v1&p2=v2

    这个这个例子中还可以看到,我们使用了一个参数:encoded = true,这个参数的意思是,对我们的参数进行URL
    Encode。

0x03 总结

通过上面的介绍,我们可以了解,如果添加我们的请求参数。当需要给每一个请求都添加相同参数时该如何封装,把Retrofit打造成更适合我们使用的工具。

—— EOF ——

Retrofit统一添加post请求的默认参数(1) 说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有。 阅读详情

相关推荐

Retrofit源码学习五:Retrofit中同步、异步请求解析

因此,当我们在使用Retrofit的时候,我们只需要将焦点放在接口的创建上,通过接口来配置方法和参数,其他的工作都由Retrofit的内部来完成。我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84408092的博客 980

Retrofit实战开发30讲

Retrofit和OkHttp一样都是Jake Wharton大神的杰作,他们都是网络通讯框架,只不过Retrofit是对OkHttp的进一步封装,使其调用更加简单方便,读书要读经典,学框架也要学经典,之所以能成为经典,因为它经受住了历史的考验,得到了人们的广泛认可,我们不但要学会用,还要学习它的工作原理,学习框架所体现出来的优秀的设计思想,设计原则,以及脱离框架类似功能的实现方法,本课程共分为六个章节,由易到难,循序渐进,所有的知识点都是自己在多年的Android实战开发中总结出来的精华,涉及到了Retrofit开发中的方方面面,从服务端搭建到客户端验证一整套流程演示给大家,避免了很多教程只讲客户端的使用不讲服务端搭建,要么使用公共的服务端api资源给大家演示,而导致对服务端的实现逻辑一无所知的尴尬,因为服务端和客户端这是一个完整的整体,他们是缺一不可的,这也是本教程的最大特色,希望大家能够喜欢。

详解Retrofit2.0 公共参数(固定参数)

主要介绍了Retrofit2.0 公共参数(固定参数),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结

Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结具体用法 -

郭昊的博客 8万+

为Retrofit统一添加post请求的默认参数的方法

最近在学习使用Retrofit,并尝试将之引入到现有的项目中来。大家都知道,在Http请求中我们使用 Content-Type 来指定不同格式的请求信息: APP_FORM_URLENCODED(application/x-www-form-urlencoded), APP_JSON(application/json), APP_OCTET_STREAM(application/octet-stream), MULTIPART_FORM_DATA(multipart/form-data), TEXT_HTML(text/html), TEXT_PLAIN(te

matlab2021a版本条件下安装spm

SPM (Statistical Parametric Mapping),中文名叫统计参数映射。统计参数映射是指构建和评估空间扩展的统计过程,用于测试关于功能成像数据的假设。这些想法已经在名为SPM的免费开源软件中得到了实例化。SPM软件包用于脑成像数据序列分析。目前的版本可以分析fMRI, PET, SPECT, EEG和MEG。 可能由于matlab版本更新的问题,按照之前教程所写的安装方法会出现错误,踩了一些坑,但好在最终解决了。。。 1、下载链接,如下 SPM12 Software -...

qq_42356925的博客 8407

Retrofit2/OkHttp3拦截器Interceptor获取完整http请求和响应数据

Retrofit2/OkHttp3拦截器Interceptor获取完整http请求和响应数据 引入: implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.12.2' package com.exam...

Zhang Phil 9655

普中科技ESP8266-01s模块CWJAP:3 FAIL报错?手把手教你用AT+CWSAP指令搞定WiFi配置

本文详细解析了普中科技ESP8266-01s模块常见的CWJAP:3 FAIL报错问题,并提供了通过AT+CWSAP指令正确配置WiFi的实战解决方案。文章涵盖错误根源分析、硬件连接指南、AT指令详解及高级调试技巧,帮助开发者快速解决ESP8266-01s模块的WiFi配置难题。

weixin_42653691的博客 202

Android知识梳理:Retrofit网络请求参数注解

前言 作为当下最流行的网络请求框架之一,Retrofit使用通俗简洁的注解就实现了网络请求url等一系列设置,下面就这些注解进行一次学习记录 大纲 1.请求方式注解 2.URL拼接方式 3.标记和参数 4.解析器和适配器 5.应用实例 正文 1.请求方式注解 一般请求方式有如下几种 @GET、@POST、@HEAD、@PUT、@HTTP... 以上注解之后一般带的是接口,u...

Demo_Jin的博客 965

TASK02【datawhale组队学习】视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建

参考教程AI硬件与机器人技术教程:https://github.com/datawhalechina/ai-hardware-robotics视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建单目深度估计 (Monocular Depth Estimation)DPT 的全称是 Dense Prediction Transformer。

m0_52024881的博客 1191

ADI官方例程HDL和No-OS生成Vivado工程

这一步是选择下载源,一般都是选择国内镜像,因为国外的源太慢了,这里选择阿里的镜像,如果没有这个选项可以在下面的User URL里添加就行,选择好源后然后点击下一步。下一步会从你选择的源上下载软件包目录,如果提示Unable to get setup from https://xxxxxx/,返回上一步,选择别的源,例如第二个163网易的源。然后就是你想要安装在哪了,下面的选项好像会决定环境变量存放在哪,不过一般都是个人电脑选择第一个默认的就行,然后点下一步。下好之后双击打开,就是这个界面了,直接点下一步。

代码匠的博客 3833

Retrofit Post请求参数为Json

​ Retrofit请求Post请求参数说明 1. 说明: Retrofit网络框架使用注解支持多种请求方式,请求参数也是注解实现的;这里主要讲解Post请求时的参数设置,涉及注解@Field、@FieldMap、@FormUrlEncoded、@Body 2. POST请求简介: HTTP请求有GET、POST、PUT、DELETE、HEAD、OPTIONS…等,其中GET请求使用明文URL获取...

weixin_40087231的博客 1万+

团体程序设计天梯赛竞赛题--登顶题【L3-039 攀岩】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 654

Retrofit统一添加post请求的默认参数

我这里整理了一份完整的学习思维以及Android开发知识大全PDF,有需要的同学可以自行领取。资料获取方式:Android完整知识学习体系路线当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。72184336)]资料获取方式:Android完整知识学习体系路线当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。

m0_61549674的博客 928

Flow Matching03-01:微分方程【微分方程(描述变化规律的方程):包含未知函数和它的导数的方程】【公式解(精确)、数值解(逼近)】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 221

物流分拣YOLO实战:YOLO26 OBB+YOLOv8多尺度融合,不规则包裹分拣效率提升40%(附训练+部署代码)

在物流分拣的工业场景中,模型的检测精度、推理速度、部署友好性本次基于YOLO26 OBB+YOLOv8多尺度融合打造的物流分拣视觉检测方案,精准解决了工业场景中不规则包裹的旋转检测、多尺度包裹的漏检问题,最终实现分拣效率提升40%,检测准确率提升至95%以上,且模型在边缘设备上的推理帧率稳定35FPS+,完全适配物流分拣的工业落地需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 882

Retrofit网络请求参数注解

1.Retrofit介绍 retrofit是在okhttp的基础上进行封装的,网络请求是通过okhttp实现的。 具体使用细节可查看retrofit官网 2.Retrofit注解 Retrofit通过注解的方式,进行网络请求。根据功能分类,注解可以分为: 2.1请求方法类: 编号 名称 1 GET 2 POST 3 PUT 4 DELETE 5 PATCH 6...

really_study的专栏 1875

把 SAP Workflow 的 Task 搞懂:从 TS 到 WS 的建模、触发与排错全景

摘要:SAP Business Workflow中的Task是工作流设计的核心单元,分为single-step(独立执行)和multistep(流程编排)两种类型。Task设计直接影响流程的可复用性、扩展性和可排错性。系统将Task分为5类(TS/T/WS/WF/TG),运行时通过事件触发、Linkage匹配、Work Item执行的链路完成流程驱动。关键事务码包括PFTC_INS(创建Task)、SWE2(事件配置)等。正确设计Task边界并遵循"先业务提交后事件触发"原则,是构建稳定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 275

retrofit2 GET请求能通过RequestBody进行参数传递吗

一、 参数传递 由于GET请求参数是通过url进行传递的,即参数通过在url后追加的方式进行传递。而实现HTTP协议的各种软件对GET参数长度的限制是不同的,就像有的浏览器要求GET 请求URL长度不能超过1024字符(这里的1024是随意假设的一个数字)。也就是说 1. 如果GET请求URL长度超过1024字符(假如某浏览器限制的URL长度就是1024字符),那么在客户端浏览器这里就被截取了——即超过的参数就不能发送到服务端。 2. 如果浏览器对GET请求参数没有做限制,也没用做截取等操作,有多少.

xzb5566的专栏 4691

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android中Retrofit网络请求参数总结,包含参数为List数组的情况

目前在我们的Android开发中,网络请求大多数都是用Retrofit网络请求框架,或者Retrofit+RxJava等等的一些组合,在实际的开发中,我们的请求方式和参数也是多种多样的,大多数的情况下都是这种的: GET方式: @Query @GET("book/search") Call<Book> getSearchBook(@Query("q") String name);//name由调用者传入 这就相当于url后面拼接参数一样的;当参数的多的时候就使用map: @Qu...

物是人非 6353

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

初探retrofit网络请求框架

初探retrofit网络请求框架 retrofit简介 retrofit是由square公司的大神开发的一个网络请求适配器框架,这个框架简化了对okhttp的使用,它将一个基本的Java接口通过动态代理的方式翻译成一个HTTP请求,并通过OkHttp去发送请求。此外它还具有强大的可扩展性,支持各种格式转换以及RxJava。本文是基于Retrofit 2.9.0 版本去分析的。 retrofit的简单使用 这里我们只是展示一下retrofit的简单使用,主要函数为我们分析源码提供入口 //创建接口服务 int

guojingbu的博客 283

Retrofit提交参数

1、Get请求url请求示例 http://gank.io/api/data/福利/{pageCount}/{pageIndex} http://gank.io/api/data/福利/5/1(5和1代表分页中的参数)public interface Api { //http://gank.io/api/data/福利/5/1 @GET("api/data/福利/{pageCo

androidxiaogang的博客 7163

Android Retrofit注解对应的postman请求参数

Android Retrofit注解对应的postman请求参数。

唐诺 5342
上一篇: Retrofit初探——Header问题补充
下一篇: Retrofit初探——同步与异步请求
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值