关于HashMap与OkHttp的使用
写了一个okhttp的post请求方法,添加参数很麻烦,需要封装:
//post请求public static void sendOkHttpRequestPost(String address , Callback callback) {OkHttpClient client = new OkHttpClient();// 创建表单参数RequestBodyRequestBody formBody = new FormBody.Builder()//.add("mac", "6C:8A:EC:03:FB:84")//.add("orderNum", "ZCS4228")//.add("model", "KK.RV22.801NT").add("mac", "02:00:00:00:00:00").build();// 创建POST请求Request request = new Request.Builder().url(address).post(formBody).build();// 发送异步请求client.newCall(request).enqueue(callback);}
可以用HashMap去填请求参数像这样:
public static void sendOkHttpPost(String url, HashMap<String, String> params, Callback callback){OkHttpClient client = new OkHttpClient();FormBody.Builder builder = new FormBody.Builder();for (String key : params.keySet()) {builder.add(key, params.get(key));}RequestBody requestBody = builder.build();Request request = new Request.Builder().url(url).post(requestBody).build();client.newCall(request).enqueue(callback);}
这样就封装好了一个方法,在每次调用的时候就可以直接把参数写到hashmap里了,方便很多:
HashMap<String, String> params = new HashMap<>();params.put("mac", "02:00:00:00:00:00");OkHttpUtil.sendOkHttpPost(url1, params, new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.d(TAG, "测试.......网络请求shibai.........." +e);}@Overridepublic void onResponse(Call call, Response response) throws IOException {Log.d(TAG, "测试.......网络请求成功.........." + response.body().string());}});
HashMap的一些说明:
HashMap是Java中一种非常常用的数据结构,用于将键映射到值。在HTTP请求中,我们可以使用HashMap将请求参数封装为键值对的形式,方便地进行POST或GET请求。
一段示例:
HashMap<String, String> params = new HashMap<>();
params.put("username", "user123");
params.put("password", "password123");MyOkHttpClient httpClient = new MyOkHttpClient();
httpClient.doPost("http://example.com/login", params, new Callback() {@Overridepublic void onFailure(Call call, IOException e) {// 请求失败的处理逻辑}@Overridepublic void onResponse(Call call, Response response) throws IOException {// 请求成功的处理逻辑}
});
在这个示例中,我们首先创建了一个HashMap对象params,并使用put方法向其中添加了两个键值对,分别表示用户名和密码。然后,我们实例化了MyOkHttpClient类,并调用了doPost方法,将请求参数和回调函数传递给了该方法。在这个示例中,我们使用了POST方法发送请求,并将参数封装为FormBody类型的请求体。
需要注意的是,键值对中的键和值应该与API的接口要求一致。此外,如果键值对中的值含有特殊字符,如空格、&、=等,需要进行URL编码处理。
keySet()方法
keySet()方法是Java中HashMap类的一个方法,用于获取HashMap中所有键的集合。该方法返回一个Set对象,其中包含了HashMap中所有键的集合。
下面是一个使用HashMap的keySet()方法的示例代码:
HashMap<String, String> params = new HashMap<>();
params.put("username", "user123");
params.put("password", "password123");for (String key : params.keySet()) {System.out.println("Key: " + key + ", Value: " + params.get(key));
}
在这个示例中,我们首先创建了一个HashMap对象params,并使用put方法向其中添加了两个键值对,分别表示用户名和密码。然后,我们使用keySet()方法获取了params中所有键的集合,并通过for循环遍历该集合。在每次循环中,我们使用get方法获取了对应键的值,并输出了键和值的信息。
需要注意的是,在使用keySet()方法遍历HashMap时,键的顺序是不固定的,因为HashMap并不保证键的顺序。如果需要按照键的顺序遍历HashMap,可以使用LinkedHashMap,它可以保证键的顺序与添加顺序相同。
扩充
HashMap并不保证键值对的顺序,因此使用keySet()方法遍历HashMap时,键的顺序是不确定的。如果需要按照键的顺序遍历HashMap,可以使用LinkedHashMap,它可以保证键的顺序与添加顺序相同。
下面是一个使用LinkedHashMap遍历HashMap的示例代码:
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");for (String key : map.keySet()) {String value = map.get(key);System.out.println(key + " = " + value);
}
在这个示例中,我们首先创建了一个LinkedHashMap对象map,并使用put方法向其中添加了三个键值对,分别表示字母和它的大写形式。然后,我们使用keySet()方法获取了map中所有键的集合,并通过for循环遍历该集合。在每次循环中,我们使用get方法获取了对应键的值,并输出了键和值的信息。
需要注意的是,LinkedHashMap保证键值对的顺序与添加顺序相同,因此遍历时的顺序就是添加时的顺序。如果需要按照值的顺序遍历HashMap,可以使用values()方法获取所有值的集合,并进行排序后遍历。
相关文章:
关于HashMap与OkHttp的使用
写了一个okhttp的post请求方法,添加参数很麻烦,需要封装: //post请求public static void sendOkHttpRequestPost(String address , Callback callback) {OkHttpClient client new OkHttpClient();// 创建表单参数RequestBodyRequestBody fo…...
华为OD机试 - 单词倒序(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:单词倒序…...

搭建Samba服务器
搭建Samba服务器 文章目录搭建Samba服务器samba安装安装命令配置-ubuntu侧为samba服务器创建一个共享目录share创建使用该共享文件夹的账号修改samba服务器配置文件重启samba服务windows创建映射1.点击映射网络驱动器2.输入Ubuntu中的ip地址及其用户信息3.输入用户信息及其密码…...

Matlab进阶绘图第5期—风玫瑰图(WindRose)
风玫瑰图(Wind rose diagram)是一种特殊的极坐标堆叠图/统计直方图,其能够直观地表示某个地区一段时期内风向、风速的发生频率。 风玫瑰图在建筑规划、环保、风力发电、消防、石油站设计、海洋气候分析等领域都有重要作用,所以在一些顶级期刊中也能够看…...
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
系列文章目录 【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧…...

XILINX AXI总线学习
AXI介绍什么是AXI?AXI(高级可扩展接口),是ARM AMBA的一部分;AMBA:高级微控制器总线架构;是1996年首次引入的一组微控制器总线;开放的片内互联的总线标准,能在多主机设计中实现多个控…...

2022CCPC女生赛(补题)(A,C,E,G,H,I)
迟了好久的补题,,现在真想把当时赛时的我拉出来捶一拳排序大致按照题目难度。C. 测量学思路:直接循环遍历判断即可,注意角度要和2π取个最小值。AC Code:#include <bits/stdc.h>typedef long long ll; const int…...

【Nginx】Nginx的安装配置
环境说明系统:Centos 7一、编译安装Nginx官网下载地址nginx: download#安装依赖 [rootnginx nginx-1.22.1]# yum install gcc pcre pcre-devel zlib zlib-devel -y #从官网下载Nginx安装包,并进行解压、编译、安装 [rootnginx ~]# wget https://nginx.or…...
数学小课堂:统计时有效地筛选数据
文章目录引言I 被爆冷门的原因II 统计时有效地筛选数据2.1 统计数据的常见问题2.2 大数据的特征2.3 有效筛选数据的原则引言 在博弈论中很多结果有发生的概率,而概率这件事只是估计出来的,并不准确。因此,一旦加入博弈的选手多了之后&#x…...
MySQL安装优化
hello,大家好,我是小鱼 本文主要通过针对 MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议。主要 涉及 MySQL 的安装以及相关参数设置的优化,但不包括 mysqld 之外的比如存储引擎相关的参…...
RocketMQ系列开篇
RocketMQ系列开篇 今天开始学习RocketMQ相关系列源码。我会带着自己的目的去学习源码。所以不会像一般的技术博客一样,写一个完整的流程,介绍每一步干了啥。而是提出一个问题,然后去看代码里面是怎么实现的。说明一下,本次系列我…...

logback无法删除太久远的日志文件?logback删除日志文件源码分析
logback无法删除太久远的日志文件?logback删除日志文件源码分析 最近发现logback配置滚动日志,但是本地日志文件甚至还有2年前的日志文件,服务器是却是正常的! 网上搜索了一波没有发现,只找到说不能删除太久远的旧日志…...
【MyBatis-Plus】基于@Version注解的乐观锁实现
引入mybatis-plus依赖,注意这里的版本要求 since 3.4.0;(3.4.1,3.4.2已测) 3.2.0肯定是不支持的,无法引入MybatisPlusInterceptor; 乐观锁 当要更新一条记录的时候,希望这条记录没有被别人更新…...

ubuntu20.04搭建detectron2环境
Ubuntu22.04安装Cuda11.3 Linux下驱动安装 # 以下命令按顺序执行 sudo apt update && sudo apt upgrade -y # or sudo apt update # 查看显卡信息 ubuntu-drivers devices sudo ubuntu-drivers autoinstall # or sudo apt install nvidia-driver-510 reboot nvidia-s…...

Navicate远程连接Linux上docker安装的MySQL容器
Navicate远程连接Linux上docker安装的MySQL容器失败 来自:https://bluebeastmight.github.io/ 问题描述:windows端的navicat远程连接不上Linux上docker安装的mysql(5.7版本)容器,错误代码10060 标注: 1、…...

基于Jetson NX的模型部署
系统安装 系统安装过程分为3步: 下载必要的软件及镜像 Jetson Nano Developer Kit SD卡映像 https://developer.nvidia.com/jetson-nano-sd-card-image Windows版SD存储卡格式化程序 https://www.sdcard.org/downloads/formatter_4/eula_windows/ 镜像烧录工具…...

【PaddlePaddle onnx】PaddlePaddle导出ONNX及模型可视化教程
文章目录1 背景介绍2 实验环境3 paddle.onnx.export函数简介4 代码实操4.1 PaddlePaddle与ONNX模型导出4.2 ONNX正确性验证4.3 PaddlePaddle与ONNX的一致性检查4.4 多输入的情况5 ONNX模型可视化6 ir_version和opset_version修改7 致谢原文来自于地平线开发者社区,未…...

虹科案例 | 如何可持续的对变压器进行温度监控?
为了延长变压器的使用寿命,需要一个测量系统来监测内部整个绕组区域的温度。它必须明确温度升高发生的位置及其强度。您可以在此处了解为什么会这样以及如何在实践中实施? PART 1 变压器多点测温问题 变压器的工作温度越高,使用寿命越短。这里主要存在…...

Go之入门(特性、变量、常量、数据类型)
一、Go语言特性 语法简单并发性。Go语言引入了协程goroutine,实现了并发编程内存分配。Go语言为了解决高并发下内存的分配和管理,选择了tcmalloc进行内存分配(为了并发设计的高性能内存分配组件,使用cache为当前线程提供无锁分配…...

第九届省赛——8等腰三角形(找规律)
题目:本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是:1. 先用1,2,3,...的自然数拼一个足够长的串2. 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。比如,当三角形高度是8时:…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...