Android-okhttp调接口传参简单举例
步骤1:在主线程中创建thread调接口
new Thread(new Runnable() {@Overridepublic void run() {getServiceList();}}).start();
步骤2:okhttp调接口
private void getServiceList(){Message msg = new Message();try{OkHttpClient okHttpClient = new OkHttpClient();FormBody.Builder formBodyBuilder = new FormBody.Builder();formBodyBuilder.add("token", "xxx").add("id", "idxxx");if (constellationArr != null) {for (String constellation : constellationArr) {formBodyBuilder.add("constellationArr", constellation);}}FormBody formBody = formBodyBuilder.build();///Request request = new Request.Builder().url("调接口url").post(formBody).build();// 创建 Call 对象并执行请求Call call = okHttpClient.newCall(request);Response response = call.execute();// 处理响应if (response.isSuccessful()) {// 响应成功String responseBody = response.body().string();// 在这里处理响应体JSONObject jsonObject = new JSONObject(responseBody);boolean success = jsonObject.getBoolean("success");String message = jsonObject.getString("msg");String obj = jsonObject.getString("obj");Log.e(TAG, obj);if (success) {// 使用 TypeToken 获取泛型类型TypeToken<ArrayList<ServicePersonShortBean>> typeToken = new TypeToken<ArrayList<ServicePersonShortBean>>() {};ArrayList<ServicePersonShortBean> servicePersonShortBeanList = gson.fromJson(obj, typeToken.getType());Bundle bundle = new Bundle();bundle.putSerializable("servicePersonShortBeanList", servicePersonShortBeanList);msg.setData(bundle);msg.what = 1;handler.sendMessage(msg);} else {Bundle bundle = new Bundle();if(message.equals("token找不到")){bundle.putString("message", "请您登录后查询");}else{bundle.putString("message", message);}msg.setData(bundle);msg.what = 2;handler.sendMessage(msg);}} else {// 响应失败// 在这里处理失败情况msg.what = 3;handler.sendMessage(msg);}// 记得关闭响应体response.close();} catch (IOException e) {if (e.toString().contains("request failed")) {msg.what = 4;handler.sendMessage(msg);} else {msg.what = 5;handler.sendMessage(msg);}e.printStackTrace();} catch (JSONException e) {e.printStackTrace();msg.what = 3;handler.sendMessage(msg);}}
步骤三:处理返回信息,在主线程中进行UI展示
// 在主线程中创建 HandlerHandler handler = new Handler(Looper.getMainLooper()) {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//根据信息编码及数据做出相对应的处理switch (msg.what) {case 1:{Bundle bundle = msg.getData();servicePersonShortBeanList = (ArrayList<ServicePersonShortBean>) bundle.getSerializable("servicePersonShortBeanList");showServicerList();new Thread(new Runnable() {@Overridepublic void run() {loadMoreData();}}).start();break;}case 2:{Bundle bundle = msg.getData();String message = bundle.getString("message");Toast.makeText(ServicePersonListActivity.this, message,Toast.LENGTH_SHORT).show();break;}case 3:Toast.makeText(ServicePersonListActivity.this, "获取xxx信息失败,请稍后再试!", Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(ServicePersonListActivity.this, "网络请求失败,请稍后重试", Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(ServicePersonListActivity.this, "网络异常,请检查您的网络\"", Toast.LENGTH_SHORT).show();break;case 6:{//加载更多Bundle bundle = msg.getData();ArrayList<ServicePersonShortBean> moreServicePersonShortBeanList = (ArrayList<ServicePersonShortBean>) bundle.getSerializable("moreServicePersonShortBeanList");servicePersonShortBeanList.addAll(moreServicePersonShortBeanList);servicePersonAdapter.notifyDataSetChanged();break;}default:break;}}};
注:链式调用写法举例
FormBody formBody = formBody = new FormBody.Builder().add("token", token).add("id", id).build();
相关文章:
Android-okhttp调接口传参简单举例
步骤1:在主线程中创建thread调接口 new Thread(new Runnable() {Overridepublic void run() {getServiceList();}}).start();步骤2:okhttp调接口 private void getServiceList(){Message msg new Message();try{OkHttpClient okHttpClient new OkHttp…...
复习java5.26
面向对象和面向过程 面向过程:把一个任务分成一个个的步骤,当要执行这个任务的时候,只需要依次调用就行了 面向对象:把构成任务的事件构成一个个的对象,分别设计这些对象(属性和方法)、然后把…...
学 Python 具体能干什么?
Python 是一种功能强大、用途广泛的编程语言,因其简洁易读的语法和丰富的库生态系统而备受欢迎。学习 Python后,你可以从事以下几方面的工作: 1. Web 开发 Python 有很多流行的 Web 框架,如: Django:一个…...
福昕PDF使用技巧
因为突然间学校的企业版WPS突然很多功能就不能使用了,所以转向福昕PDF。 一、合并文件 添加需要合并的文件,可以使用ctrla等方式全选 找到最上方的“合并文件” 二、文本注释...
条款8:了解各种不同意义的new和delete
有时候我们觉得,C的术语仿佛是要故意让人难以理解似的。 这里就有一个例子:请说明new operator 和operator new 之间的差异(译注:本书所说的new operator,即某些C教程如C Primer 所谓的new expression) 当你写出这样…...
windows 搭建 go开发环境
go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须…...
Android 布局中@NULL的使用和代码实现方式详解
文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…...
服务器数据恢复—同友存储raid5阵列上层虚拟机数据恢复案例
服务器数据恢复环境: 某市教育局同友存储,存储中有一组由数块磁盘组建的raid5阵列,存储空间划分若干lun。每个lun中有若干台虚拟机,其中有数台linux操作系统的虚拟机为重要数据。 存储结构: 服务器故障: r…...
我得近况说明
最近转入了Django开发工作,所以主要方向在Python开发。...
C语言——在头⽂件中#if、_STDC_等字⾏起什么作⽤?
一、问题 通常,⼀些程序员都不会去研究头⽂件中的内容是什么含义,总觉得乱乱的,有很多 #if、_STDC_、#line 等字符,那么这些字符都各代表什么呢,在头⽂件中又起到什么作⽤呢? 二、解答 在头⽂件中存在类似…...
解密MySQL中的临时表:探究临时表的神奇用途
欢迎来到我的博客,代码的世界里,每一行都是一个故事 解密MySQL中的临时表:探究临时表的神奇用途 前言临时表的定义与分类创建与使用临时表临时表的操作与管理优化与性能提升注意事项与最佳实践 前言 在数据库管理中,临时表是一个…...
Go 语言简介 -- 高效、简洁与现代化编程的完美结合
在现代软件开发领域,选择合适的编程语言对于项目的成功至关重要。Go 语言(又称 Golang )自 2009 年由Google发布以来,以其简洁的语法、高效的并发模型以及强大的性能,迅速成为开发者们的新宠。Go语言不仅融合了传统编译…...
绝缘鞋计量校准周期多长时间合适?校验检测方法是什么?
绝缘鞋的计量校准,通常是应用在电学相关领域,因此也是属于计量校准机构中的电学室管辖的范围,而绝缘鞋为了安全防护,也是采用了绝缘材料,其标准要求耐电压至少在15KV以下,可应用于工频(50到60F&…...
python-13(案例讲解)
目录 抓取链家前十页的数据 计算均价和总价 计算的类型(整租,合租) 计算的房型 抓取boss直聘前十页的数据 抓取boss直聘前十页的数据 将获取数据本地序列化 计算每个区的需求个数与均价 抓取链家前十页的数据 链家网址:长…...
【深度学习】最强算法之:人工神经网络(ANN)
人工神经网络ANN 1、引言2、人工神经网络(ANN)2.1 定义2.1.1 定义2.1.2 应用场景 2.2 核心原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝:鱼哥,看新闻没? 小鱼:新闻天天看,啥事大惊小怪的。 小屌…...
Unity vscode在mac上的编译环境设置
在settings.json文件中配置以下信息。 settings.json路径一般在/Users/xxx/Library/Application Support/Code/User/settings.json {"omnisharp.useGlobalMono": "always","editor.fontLigatures": false,"omnisharp.useModernNet": …...
【Java】在高并发场景下,保证 Redis 缓存一致性的几种方案
在高并发场景下,保证 Redis 缓存一致性是一个常见的挑战。以下是几种常见的解决方案及其优缺点,以及相应的代码示例。 1. Cache Aside Pattern (旁路缓存模式) 原理 读取数据时,先读缓存,如果缓存没有命中,再从数据…...
GaussDB数据库的备份与恢复
1.逻辑备份-gs_dump gs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。 备份sql语句 gs_dump是openGauss用于导出数据库相关信息的工…...
03-02-Vue组件之间的传值
前言 我们接着上一篇文章 03-01-Vue组件的定义和注册 来讲。 下一篇文章 04-Vue:ref获取页面节点–很简单 父组件向子组件传值 我们可以这样理解:Vue实例就是一个父组件,而我们自定义的组件(包括全局组件、私有组件)…...
昂达固态硬盘数据恢复方法:全面解析与操作指南
在数字化时代,数据已经成为我们生活和工作中不可或缺的一部分。而固态硬盘(SSD)由于其读写速度快、抗震性强等优点,慢慢取代了传统的机械硬盘,成为我们存储数据的主要选择。然而,即便再先进的存储设备&…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
