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)由于其读写速度快、抗震性强等优点,慢慢取代了传统的机械硬盘,成为我们存储数据的主要选择。然而,即便再先进的存储设备&…...
HS2-HF_Patch:终极汉化与优化补丁完全指南
HS2-HF_Patch:终极汉化与优化补丁完全指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日语界面烦恼吗?HS2-H…...
Arduino入门教程十三|自制模拟传感器(分压原理详解+光敏夜灯+constrain范围限制)
我整理了一套Arduino 零基础 从入门到高级 完整系统课程,包含视频讲解、全套源码、接线图纸、库文件、ESP32/ESP32-S3 摄像头 & 物联网实战项目,循序渐进,新手也能零基础吃透。需要系统学习可以查看我主页专属课程(零基础保姆级Arduino教程从入门到实战_在线视频教程-C…...
别再让Ubuntu卡成PPT了!手把手教你调整Swap分区大小(从1G到64G实战)
Ubuntu性能优化实战:科学配置Swap分区解决系统卡顿当你在Ubuntu上同时运行多个虚拟机、编译大型项目或处理海量数据时,是否经历过系统突然变得异常缓慢,甚至出现程序无响应的情况?这种"卡成PPT"的体验往往不是物理内存不…...
TranslucentTB:Windows任务栏透明化终极解决方案与高级配置指南
TranslucentTB:Windows任务栏透明化终极解决方案与高级配置指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentT…...
机器学习结合对称性描述符高效预测硅带隙温度依赖性
1. 项目概述:当机器学习遇见声子物理在材料计算领域,我们常常面临一个“鱼与熊掌”的困境:一方面,基于第一性原理的密度泛函理论(DFT)计算能给出相当可靠的基态电子结构,比如硅的晶格常数、能带…...
K-12机器学习整合教学:从数据与算法融合到课堂实践
1. 项目概述:为什么K-12机器学习教学需要整合路径? 在过去的几年里,我接触了上百位中小学信息技术老师、STEM教育从业者以及课程开发者,大家聊得最多的一个困惑就是: “机器学习这东西,到底该怎么教给孩子…...
OFDM同步避坑指南:STO和CFO估计,选ML还是Classen算法?看这篇就够了
OFDM同步算法实战指南:如何在高干扰环境中选择最优STO/CFO估计方案无线通信工程师在设计OFDM系统时,往往会在同步环节遇到一个关键抉择:面对复杂的信道环境和严苛的性能要求,究竟该选择哪种同步算法组合?这个问题没有标…...
机器学习赋能系统综述:SyROCCo项目实战解析与NLP应用指南
1. 项目概述:当系统综述遇上机器学习如果你做过系统综述,一定对那种“望洋兴叹”的感觉不陌生。面对动辄成千上万的文献,光是筛选、阅读、提取数据这几步,就足以耗掉一个团队数月甚至数年的精力。更头疼的是,等你终于完…...
从GEDI L4A数据到论文图表:如何用Python和geemap进行AGBD时空分析与可视化
从GEDI L4A数据到论文图表:Python与geemap实现AGBD科研级分析全流程当我们需要量化森林碳储量或评估生态恢复成效时,地上生物量密度(AGBD)是最关键的指标之一。NASA的GEDI卫星通过激光雷达技术,以25米分辨率捕捉全球植…...
[智能体-29]:Chatbox 一款开源、跨平台的「AI 客户端聚合工具」,它本身不提供 AI 模型,而是帮你统一接入 ChatGPT、DeepSeek、Ollama 等几乎所有主流大模
Chatbox 是一款开源、跨平台的「AI 客户端聚合工具」,它本身不提供 AI 模型,而是帮你统一接入 ChatGPT、Claude、Gemini、DeepSeek、Ollama 等几乎所有主流大模型,提供一个隐私优先、功能丰富的统一交互界面。一、核心定位与本质你可以把 Cha…...
