SpirngBoot整合快递100

目录

一、注册快递100

二、技术文档地址

三、需要认证的key和comcumer

 四、spring boot 整合快递 100使用

4.1 引入快递100和hutool的依赖

4.2 将key和comcumer写入application.properties文件中

 4.3 新建一个modle,用于将查出来的json数据转成对象

4.4 新建一个controller

4.5 结果显示

五、源码参考


一、注册快递100

https://api.kuaidi100.com/manager/v2/query/overview

二、技术文档地址

https://api.kuaidi100.com/document/5f0ffb5ebc8da837cbd8aefc

三、需要认证的key和comcumer

登录到快递100的后台

key:uxdpeXvk7416

customer: A04A2C3A70259125790AE81164145FE2

 四、spring boot 整合快递 100使用

4.1 引入快递100和hutool的依赖

   <!-- 添加快递100的依赖 --><dependency><groupId>com.github.kuaidi100-api</groupId><artifactId>sdk</artifactId><version>1.0.11</version></dependency><!--添加hutool的依赖 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.18</version></dependency>

4.2 将key和comcumer写入application.properties文件中

# 定义出快递100 key和customer
kuaidi100.key=uxdpeXvk7416
kuaidi100.customer=A04A2C3A70259125790AE81164145FE2

 4.3 新建一个modle,用于将查出来的json数据转成对象

/** Copyright (c) 2020, 2024, webrx.cn All rights reserved.**/
package com.beiyou.model;import lombok.Data;import java.util.List;@Data
public class KuaidiInfo {private String message;private List<Step> data;@Dataclass  Step {private String time;private String ftime;private String context;}
}

4.4 新建一个controller

/** Copyright (c) 2020, 2024, webrx.cn All rights reserved.**/
package com.beiyou.controller;import cn.hutool.json.JSONUtil;
import com.beiyou.model.KuaidiInfo;
import com.google.gson.Gson;
import com.kuaidi100.sdk.api.QueryTrack;
import com.kuaidi100.sdk.contant.CompanyConstant;
import com.kuaidi100.sdk.core.IBaseClient;
import com.kuaidi100.sdk.pojo.HttpResult;
import com.kuaidi100.sdk.request.QueryTrackParam;
import com.kuaidi100.sdk.request.QueryTrackReq;
import com.kuaidi100.sdk.utils.SignUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api/kd100")
public class KD100Controller {/*** 定义出快递100 的customer和key*/@Value("${kuaidi100.customer}")private String customer;@Value("${kuaidi100.key}")private String key;@GetMappingpublic KuaidiInfo queryTrack() throws Exception {QueryTrackReq queryTrackReq = new QueryTrackReq();QueryTrackParam queryTrackParam = new QueryTrackParam();queryTrackParam.setCom(CompanyConstant.ZT);queryTrackParam.setNum("78414126296826");String param = new Gson().toJson(queryTrackParam);queryTrackReq.setParam(param);queryTrackReq.setCustomer("A04A2C3A70259125790AE81164145FE2");queryTrackReq.setSign(SignUtils.querySign(param, key, customer));IBaseClient baseClient = new QueryTrack();HttpResult h = baseClient.execute(queryTrackReq);String body = h.getBody();/*** 1. 使用hutooL工具将json字符串转换为对象*/KuaidiInfo kuaidiInfo = JSONUtil.toBean(body, KuaidiInfo.class);/*** 通过debug可以得出 无论输入的信息是否有误 都会返回200* 所以我们可以根据message来判断是否成功*/return kuaidiInfo;}}

4.5 结果显示

 还差一个state状态

我们可以新建一个枚举 用于定义状态

package com.beiyou.emul;import lombok.Getter;
import lombok.Setter;import java.util.Arrays;
import java.util.Optional;//轨迹当前状态,如:0在途,1揽收,2疑难,3签收,4退签,5派件,6退回,7转单,10待清关,11清关中,12已清关,13清关异常,14收件人拒签等
public enum KDstate {SALE(0, "在途"),OFF_SALE(1, "揽收"),DELETE(5, "派件");@Setter@Getterprivate Integer code; //状态@Setter@Getterprivate String desc; //状态描述KDstate(Integer code, String desc) {this.code = code;this.desc = desc;}public static KDstate findByCode(Integer code) {//jdk1.8提供了哪些新特性Optional<KDstate> optional = Arrays.stream(KDstate.values()).filter(item -> item.getCode().equals(code)).findFirst();/*if (optional.isPresent()){return optional.get();}return null;*/return optional.orElse(null);}
}

修改最开始的KuaidiInfo 

/** Copyright (c) 2020, 2024, webrx.cn All rights reserved.**/
package com.beiyou.model;import com.beiyou.emul.KDstate;
import lombok.Data;import java.util.List;@Data
public class KuaidiInfo {private String message;private List<Step> data;// 定义快递状态private String  state;/*** 根据传来的state 返回对应的描述* @return*/public String getStateX() {return KDstate.findByCode(Integer.parseInt(this.state)).getDesc();}private String stateX;@Dataclass  Step {private String time;private String ftime;private String context;}
}

此时前端只需要渲染 stateX的数据即可

五、源码参考

 源码我已经放到了云效,有兴趣可以参考

https://codeup.aliyun.com/62858d45487c500c27f5aab5/SpringBoot-KD100-Huang.git 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySql-日期分组

一、分别统计各时间各类型数据条数 数据库的 request_time字段 数据类型&#xff1a;timestamp 默认值&#xff1a;CURRENT_TIMESTAMP 例子&#xff1a; 2024-01-26 08:25:48 原数据&#xff1a; 1、将数据按照日期&#xff08;年月日&#xff09;形式输出 按照request_…

5A手控问道手游戏抢装备说明手册

5A手控-问道抢装备方法 下载软件地址&#xff1a;www.aishouk.com 支持win10 和win 11 系统 下载&#xff0c;安装完成后&#xff0c;打开软件。 下载最好选择 CSDN 或者 百度网盘下载 &#xff0c;官网下载速度很慢。这点大家 需要注意。 注册/登录 打开软件&#xff0c;点…

Mellanox网卡打流命令ib_write_bw执行遇到Couldn‘t listen to port 18515原因与解决办法?

要点 要点&#xff1a; ib默认使用18515命令 相关命令&#xff1a; netstat -tuln | grep 18515 ib_write_bw --help |grep port# server ib_write_bw --ib-devmlx5_1 --port 88990 # client ib_write_bw --ib-devmlx5_0 1.1.1.1 --port88990现象&#xff1a; 根因&#xf…

首页最新 多IP浏览器防关联:如何配置多个独立且稳定的IP地址?

在互联网时代&#xff0c;IP地址的重要性不言而喻。然而&#xff0c;IP关联问题却成为一项令人担忧的隐私和安全挑战。针对这个问题&#xff0c;多IP浏览器是一种解决方案&#xff0c;可以帮助用户单独配置多个独立且稳定的IP地址&#xff0c;有效地防止IP关联。 一、IP关联是…

ipad的文件如何传到手机里 iPad较大文件怎么发送出去 iMazing下载教程

在现代生活中&#xff0c;随着移动设备的普及和多样化&#xff0c;我们经常需要在不同设备之间传输文件&#xff0c;以便在工作、学习或娱乐中更加便捷地使用这些文件。iPad和iPhone是用户广泛使用的设备&#xff0c;我们时常使用它们来存储和访问大量的个人数据。但有时&#…

春游江淮 请来池州|快乘高铁 趣游池州 池州送福利啦

穿群山,越川泽,通绝隘……池黄高铁呼啸而来! 这条高铁巨龙全长约125公里,设计时速高达350公里。沿途设池州、九华山、黄山西、黟县东4座车站,池州站与宁安高铁相接,黟县东站与杭昌高铁相连,如同纽带般串联起皖南“两山一湖”(九华山、黄山、太平湖)风景名胜区。 池黄高铁开通…

下一代云原生应用引擎OpenNJet体验

文章目录 前言OpenNJet 介绍OpenNJet VS NGINXOpenNJet 安装OpenNJet 动态配置体验动态location动态黑名单动态灰度发布 体验感受 前言 作为一名技术人员&#xff0c;我们应时刻保持对行业动态的关注&#xff0c;今天我们就来体验一下号称下一代云原生应用引擎OpenNJet。 Ope…

亚马逊的Listing是否会导致店铺关联?

亚马逊账号关联是否有可能因为listing产品引起的呢&#xff1f;也会存在关联&#xff0c;但如果其中一个站点出了问题&#xff0c;另一账号跟着出事的情况不多见&#xff08;因为亚马逊本来就支持卖家到各个站点开店把产品销售的各个区域&#xff09;。很多客户有过相关的经验都…

一曲《少年中国说》令人情怀激荡

今天&#xff0c;作为四川籍人的本“人民体验官”&#xff0c;将充满自豪感地推广人民日报官方微博文化产品《看我中国少年&#xff01;川传学子热血合唱少年中国说》。 图片&#xff1a;来源“人民体验官”推广平台 人民微博说&#xff1a;“百年前&#xff0c;梁启超先生一篇…

VTK —— 二、教程六 - 为模型加入3D微件(按下i键隐藏或显示)(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功&#xff0c;若无VTK库则请先参考如下链接编译vtk源码&#xff1a; VTK —— 一、Windows10下编译VTK源码&#xff0c;并用Vs2017代码测试&#xff08;附编译流程、附编译好的库、vtk测试源码&#xff09; 教程描述 本…

HFSS19 官方案例教程W03 - SMA接头与微带分支

SMA接头与微带分支 1►射频接头简介 连接器是电子测量中必不可少的重要部件,无论测试仪表还是DUT,无论线缆还是附件,处处都有形形色色的不同连接器的身影。对于射频工程师而言,经常用到的连接器有N型、BNC型、SMA型、3.5 mm、2.92 mm、2.4 mm、1.85 mm、1 mm这几种 (上…

OI Wiki—枚举

//新生训练&#xff0c;搬运整理 简介 枚举&#xff08;英语&#xff1a;Enumerate&#xff09;是基于已有知识来猜测答案的问题求解策略。 枚举的思想是不断地猜测&#xff0c;从可能的集合中一一尝试&#xff0c;然后再判断题目的条件是否成立。 要点 给出解空间 建立简洁…

NCC导入导出开发

&#x1f4e3;NCC导入导出开发 ✨1. 导入流程图 ✨2. 实现步骤 &#x1f434;1. 前端代码实现。 &#x1f434;2. 配置文件创建与设置。 &#x1f434;3. 后端代码实现。 &#x1f434;4. 注册后端代码类。

一文掌握Vue依赖注入:原理、应用场景以及最佳模块化与单元测试实践,提升代码的可维护性与模块化程度

Vue 中的依赖注入&#xff08;Dependency Injection, DI&#xff09;机制通过 provide 与 inject API&#xff0c;实现了跨组件层级间的数据与服务透明传递&#xff0c;使父组件能够向其任意深度的子孙组件“注入”依赖&#xff0c;而不需要通过层层传递 props 或使用全局状态管…

接口测试 - postman

文章目录 一、接口1.接口的类型2. 接口测试3. 接口测试流程4. 接口测试用例1. 测试用例单接口测试用例-登录案例 二、HTTP协议1. HTTP请求2. HTTP响应 三、postman1. 界面导航说明导入 导出用例集 Get请求和Post请求的区别:2.postman环境变量和全局变量3. postman 请求前置脚本…

《Fundamentals of Power Electronics》——Boost电路及仿真

Boost电路的拓扑结构如下所示&#xff1a; 下面是在simulink中搭建的一个Boost电路的仿真实验平台&#xff0c;其中直流输入电压为100V&#xff0c;电感值为1mH(模拟电阻为1毫欧)&#xff0c;电容值为470uF&#xff0c;负载为50欧姆&#xff0c;占空比选择为0.5&#xff0c;开关…

探索的时光 (整数三分)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 5 3 2 1 2 3 输出 28 思路&#xff1a; 根据题意&#xff0c;已经给出了运算函数 当我们看到这些函数的时候&#xff0c;联想一下&#xff0c;它们的单调性&#xff0c;以…

【建议收藏】用AI快速生成一个网页(名侦探柯南~灰原哀主题网页),适合大学生web期末大作业

下面是提供给AI的提示词和AI给出的代码以及成果展示 1、生成一个网页导航栏&#xff0c;宽度为1300px&#xff0c;高度为60px。导航区域在导航栏最右侧不超出导航栏&#xff0c;高60px&#xff0c;宽度500px&#xff0c;里面是5个导航菜单项横向排列&#xff0c;每个宽度100px&…

MySQL-查询数据-练习

练习 1.创建一个查询&#xff0c;显示收入超过 12,000 的雇员的名字和薪水。 select LAST_NAME,SALARY from employees where SALARY > 12000;2.创建一个查询&#xff0c;显示雇员号为 176 的雇员的名字和部门号。 select LAST_NAME,DEPARTMENT_ID from employees where …

Electron+Vue3+Vite+ElectronForge整合 - 一键启动两个服务 一键打包两个服务

说明 本文介绍一下 Electron Vue3 Vite Electron Forge 的高级整合操作。vue3 : 使用 TS 的语法开发&#xff1b; Electron : 使用 JS 的语法开发。本文将从项目初始化开始&#xff0c;一步一步的完成项目的启动、打包全流程的介绍。实现的效果是 &#xff1a; 1、一个正常…