Java OkHttp使用(二)
文章目录
- 引言
- 使用 OkHttp 发送回调
- 其他
引言
记录一下 OkHttp 的使用;OkHttp 异步发送回调请求,增加回调失败重试。
使用 OkHttp 发送回调
/*** 回调重试类*/
@Data
public class CallBackRetryData {/*** 回调信息JSON*/private JSONObject bodyRequest;/*** 回调发送地址*/private String url;/*** 重试次数*/private int time;public CallBackRetryData(JSONObject bodyRequest, String url, int time) {this.bodyRequest = bodyRequest;this.url = url;this.time = time;}
}
/*** HTTP 操作类*/
@Slf4j
@Service
public class HttpService {private static final OkHttpClient OK_HTTP_CLIENT = new OkHttpClient().newBuilder().connectTimeout(1, TimeUnit.MINUTES).readTimeout(1, TimeUnit.MINUTES).writeTimeout(1, TimeUnit.MINUTES).build();/*** 回调重试队列*/private final Queue<CallBackRetryData> VERIFY_QUEUE = new LinkedList<>();/*** 构造回调信息*/public void buildCallBackData() {JSONObject bodyRequest = new JSONObject();bodyRequest.put("userId", "123456789");CallBackRetryData retryData = new CallBackRetryData(bodyRequest, "https://发送回调地址", 1);sendCallBack(retryData);}/*** 异步发送回调*/public void sendCallBack(CallBackRetryData retryData) {RequestBody requestBody = RequestBody.create(retryData.getBodyRequest().toJSONString(), MediaType.parse("application/json;charset=utf-8"));Request request = new Request.Builder().url(retryData.getUrl()).post(requestBody).addHeader("content-type", "application/x-www-form-urlencoded").build();OK_HTTP_CLIENT.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {log.error("[回调失败][call:{}]", e.getMessage());// 回调次数+1retryData.setTime(retryData.getTime() + 1);// 放入验证队列VERIFY_QUEUE.offer(retryData);}@Overridepublic void onResponse(Call call, Response response) throws IOException {String responseData = response.body().string();CallBackResponseData callBackData = JSONObject.parseObject(responseData, CallBackResponseData.class);if (callBackData.getCode() != 200) {log.error("[回调失败][状态码错误:{}]", callBackData);// 回调次数+1retryData.setTime(retryData.getTime() + 1);// 放入验证队列VERIFY_QUEUE.offer(retryData);}}});}/*** 每分钟检查一次*/@Scheduled(cron = "0 0/1 * * * ? ")public void execute() {// 执行超时验证队列while (VERIFY_QUEUE.size() > 0) {CallBackRetryData retryData = VERIFY_QUEUE.poll();// 重新发送if (retryData.getTime() <= 3) {try {log.info("[VERIFY_QUEUE][userId:{}][time:{}]",retryData.getBodyRequest().getString("userId"),retryData.getTime());sendBonusCallBack(retryData);} catch (Exception e) {log.error("[VERIFY_QUEUE error: {}]", e.getMessage());}}}}
}
其他
Java OkHttp使用
相关文章:
Java OkHttp使用(二)
文章目录 引言使用 OkHttp 发送回调其他 引言 记录一下 OkHttp 的使用;OkHttp 异步发送回调请求,增加回调失败重试。 使用 OkHttp 发送回调 /*** 回调重试类*/ Data public class CallBackRetryData {/*** 回调信息JSON*/private JSONObject bodyRequ…...
宝塔(bt.cn)面板新手小白使用中常见问题
1.新手小白-服务器正确的安装宝塔的粗略教程 购买服务器后首先是挂载磁盘再安装宝塔,步骤不要搞错,免得安全后磁盘空间不对需要挂载多免费异步,切记切记 挂载磁盘:(挂载磁盘只需一行命令即可,请根据自己的系统选择正确…...
【LeetCode:3133】数组最后一个元素的最小值(Java)
题目链接 3133. 数组最后一个元素的最小值 题目描述 给你两个整数 n 和 x 。你需要构造一个长度为 n 的 正整数 数组 nums ,对于所有 0 < i < n - 1 ,满足 nums[i 1] 大于 nums[i] ,并且数组 nums 中所有元素的按位 AND 运算结果为…...
FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘解决方法
出现这个问题的原因是导入文件时默认类型选错了,修改文件类型即可 如图右键导入文件,选择“Options for File OLED.C” 选择“File Type”,将头文件文件类型修改为“Text Documents file”,将.c文件文件类型修改为“C Sorce file” 第二方…...
自行车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化
在当今这个日新月异的数字化时代,制造业正经历着前所未有的变革,自行车制造5G智能工厂工业物联数字孪生平台的兴起,无疑是这场转型浪潮中一股强劲力量。自行车制造5G智能工厂工业物联数字孪生平台的成功应用,不仅仅是技术上的突破…...
一文彻底搞懂Transformer - FFNN(前馈神经网络)
Transformer 神经网络: 神经网络(Neural Networks)是一种模仿生物神经网络的结构和功能的数学或计算模型。它由大量的人工神经元(也称为节点或处理单元)相互连接而成,这些神经元之间通过带有权重的连接进行…...
SpringCloud Gateway及 Springboot 服务 跨域配置
SpringCloud Gateway 跨域配置 配置文件 #跨域支持 spring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-headers[0]* spring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-methods[0]* spring.cloud.gateway.globalcors.cors-configuration…...
【Solidity】安全与校验
信息传输 发送方 A: 计算消息 message 的哈希值 H:hash(message) H 私钥 privateKey ➕ 哈希值 H 🟰 签名 signature:signature sign(H, privateKey) 将消息 message 和签名 signature 发送给 B 接收方 B: 计算…...
黑神话悟空四十二项修改器 v1.0
软件简介 黑神话悟空四十二项修改器由风灵月影精心打磨,为《黑神话悟空》这款备受瞩目的游戏量身定制。这款修改器界面简洁、体积小巧、功能强大,它致力于为玩家提供便捷的游戏体验,让您能够根据个人喜好和需求,轻松调整游戏内的…...
RM电控RTOS
OS即(operating system)操作系统,比如我们常用的windows系统,mac系统,android系统,ios系统,linux系统等,都属于操作系统。操作系统的本质是一个特殊的软件,它直接管理硬件…...
Arduino开源四足蜘蛛机器人制作教程
视频教程:手把手叫你做四足蜘蛛机器人——1零件介绍_哔哩哔哩_bilibili 一、项目介绍 1.1 项目介绍 Arduino主控,图形化编程,趣味学习 Arduino nano开发板舵机扩展底板 4.8V可充电电池,支持Arduino C语言编程和米思齐图形化编程…...
【Axure高保真原型】中继器表格——标签使用情况案例
今天和大家分享中继器表格——标签使用情况案例的原型模板,效果包括: 模糊搜索——输入标签编号或者标签名称,可以快速查找对应的数据 排序——点击排序按钮,可以按升序或降序排列 分页——点击上拉列表,可以选择表格…...
ABAP字符串反转 and 寻找字符所在位置 and 根据数量汇总时把数量转为非数值类型
1.字符串反转 and 寻找字符所在位置 LOOP AT gt_wlmc ASSIGNING FIELD-SYMBOL(<fs_wlmc>). "遍历内表<fs_wlmc>-matnr <fs_wlmc>-matnr(8).DATA: l_output TYPE char50,v_off2 TYPE i,str TYPE i,str2 TYPE i.CALL FUNCTION STRING_REVERS…...
【机器学习第十二章——计算学习理论】
机器学习第十二章——计算学习理论 12.计算学习理论12.1 基础知识12.1 可能学习近似正确假设(PAC)12.3 有限假设空间12.4 VC维 12.计算学习理论 12.1 基础知识 从理论上刻画了若干类型的机器学习问题中的困难和若干类型的机器学习算法的能力 这个理论要…...
Docker私人学习笔记
俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步! 此笔记主要是antlr4.13版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。 一、基础概念:…...
谷粒商城实战笔记-233~235-商城业务-认证服务-单点登录流程-原理
文章目录 一,场景二,单点登录流程 一,场景 包含以下三节的内容: 一,233-商城业务-认证服务-单点登录流程-1二,233-商城业务-认证服务-单点登录流程-2三,233-商城业务-认证服务-单点登录流程-3…...
机器学习在旅游业的革新之旅
机器学习在旅游业的革新之旅 随着科技的飞速发展,尤其是人工智能(AI)技术的广泛应用,各个行业都迎来了前所未有的变革。其中,旅游业作为全球经济的重要支柱之一,更是受益匪浅。机器学习(Machin…...
OpenCTI:开源网络威胁情报平台
OpenCTI 是一个开源平台,旨在帮助组织管理其网络威胁情报 (CTI) 数据和可观察数据。 该平台由 Filigran 开发,使用基于 STIX2 标准的知识模式构建数据。 它采用现代 Web 应用程序架构,配备 GraphQL API 和用户友好的前端。 OpenCTI 与 MIS…...
linux shell 脚本 let 数学计算
linux shell 脚本 let 数学计算 http://www.codebaoku.com/it-shell/ let命令中的算术表达式必须用双引号括起来,以避免解释器对特殊字符进行处理。 在变量的计算中,不需要使用$符号来表示变量, #!/bin/shweek_daydate %u echo $week_day…...
mp3和mp4的区别是什么?怎么把mp3转成mp4?(全)
在生活中我们或多或少会听到“mp3”和“mp4”,那么什么是mp3和mp4呢?mp3和mp4的区别是什么?mp3是一种音频压缩技术,旨在在不显著牺牲音质的前提下减小音频文件的体积,使其适用于音乐和其他音频内容的存储与传输。相比之…...
开源停车查询工具技术解析:从数据抓取到API服务的完整架构实践
1. 项目概述:一个开源停车查询工具的诞生最近在GitHub上看到一个挺有意思的项目,叫Harperbot/openclaw-parking-query。光看名字,你大概能猜到它和停车查询有关。没错,这是一个开源的停车信息查询工具,或者说ÿ…...
陈,嵌入式生物医学电子实验箱 电子创新生物医学试验箱 生物医学工程电子试验箱
由硬件、软件、附件、实验教材四部分组成,模块独立、组合灵活,安徽正华,生物,露硬件覆盖主流模拟与数字电路:模拟电路:集成运放、心电放大、滤波、信号发生等典型电路;数字电路:AVR/…...
Arm ADI调试接口架构与实战解析
1. Arm Debug Interface (ADI) 架构解析 在嵌入式系统开发领域,调试接口是连接开发环境与目标硬件的关键纽带。作为行业标准制定者,Arm推出的Debug Interface (ADI) 提供了一套完整的芯片级调试解决方案。我曾在多个基于Cortex-M/A系列处理器的项目中深度…...
计算机毕业设计Hadoop+Spark+AI大模型Steam游戏推荐系统 游戏可视化 机器学习 深度学习 大 数据毕业设计
温馨提示:本人主页置顶文章开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章开头有 CSDN 平台官方提供的学长联系…...
Zephyr RTOS在ESP32-C3上的移植实践:从环境搭建到JTAG调试
1. 项目概述:当Zephyr RTOS遇上ESP32-C3最近拿到了一块MuseLab出品的nanoESP32-C3开发板,这块板子挺有意思,自带了一个基于DAPlink的ESPLink调试器。正好看到Zephyr RTOS的主线代码刚刚合并了对ESP32-C3这颗RISC-V芯片的初步支持,…...
jank:基于LLVM的Clojure方言,实现原生编译与C++无缝互操作
1. 项目概述:当Clojure拥抱LLVM如果你和我一样,既沉迷于Clojure那种简洁、优雅、函数式的编程体验,又时常对JVM的启动时间、内存占用,或者与底层系统交互时的“隔靴搔痒”感到一丝无奈,那么jank的出现,无疑…...
IJTAG标准:芯片测试的通用语言与片上仪器集成实践
1. IJTAG:芯片内部测试的“通用语言”时代来临如果你是一位芯片设计工程师,或者从事电路板测试与调试工作,最近十几年一定对“片上仪器”这个概念不陌生。简单来说,就是把原本放在昂贵外部测试机台上的测量、监控、调试功能&#…...
CTF新手必看:用Python脚本修复被篡改的PNG图片宽高(附CRC校验原理详解)
CTF实战:Python脚本修复PNG图片宽高与CRC校验原理全解析 当你第一次在CTF比赛中遇到一张无法正常显示的PNG图片时,可能会感到困惑。这张图片看起来像是被故意破坏了,但其中很可能隐藏着关键的Flag信息。本文将带你深入理解PNG文件结构&#x…...
空间计算时代,跨镜追踪如何凭纯视觉技术实现全域无感管控
空间计算时代,跨镜追踪如何凭纯视觉技术实现全域无感管控空间计算技术的蓬勃演进,正推动数字孪生、视频孪生产业完成从平面视觉识别到三维空间感知的产业跃迁,各类大范围园区、口岸港区、城域综治、工矿戍防场景,对于全域动态目标…...
Midjourney Turbo模式实测报告:启动速度提升3.8倍、出图稳定性达99.2%——但92%用户根本没开对开关
更多请点击: https://intelliparadigm.com 第一章:Midjourney Turbo模式的核心价值与行业影响 加速生成与质量平衡的范式跃迁 Turbo 模式并非简单提速,而是通过动态计算图剪枝、低精度混合推理(FP16/INT8)及缓存感知…...
