SpirngBoot整合快递100

2024-04-30 14:36
文章标签 整合 100 spirngboot 快递

本文主要是介绍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 

这篇关于SpirngBoot整合快递100的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/949130

相关文章

RabbitMQ使用及与spring boot整合

1.MQ   消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法   应用:不同进程Process/线程Thread之间通信   比较流行的中间件:     ActiveMQ     RabbitMQ(非常重量级,更适合于企业级的开发)     Kafka(高吞吐量的分布式发布订阅消息系统)     RocketMQ   在高并发、可靠性、成熟度等

springboot整合swagger2之最佳实践

来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。 一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。 SpringBoot集成 pom <!--swagge

springboot 整合swagger

没有多余废话,就是干 spring-boot 2.7.8 springfox-boot-starter 3.0.0 结构 POM.xml <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/

【LeetCode热题100】前缀和

这篇博客共记录了8道前缀和算法相关的题目,分别是:【模版】前缀和、【模版】二维前缀和、寻找数组的中心下标、除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和。 #include <iostream>#include <vector>using namespace std;int main() {//1. 读取数据int n = 0, q = 0;ci

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>

uniapp,vite整合windicss

官方文档:https://weapp-tw.icebreaker.top/docs/quick-start/frameworks/hbuilderx 安装: npm i -D tailwindcss postcss autoprefixer# 初始化 tailwind.config.js 文件npx tailwindcss initnpm i -D weapp-tailwindcss# 假

Spring Cloud整合Seata实现分布式事务

文章目录 1.Seata1.1 官网1.2 下载1.3 通过安装包运行seata1.3.1 解压seata-server-1.3.0.zip1.3.2 修改 conf/file.conf 配置文件1.3.3 修改conf/registry.conf配置文件1.3.4 添加seata配置信息到nacos1.3.5 配置seata服务端数据库表结构1.3.6 启动seata 2.Spring

牛客小白月赛100(A,B,C,D,E,F三元环计数)

比赛链接 官方讲解 这场比较简单,ABC都很签到,D是个不太裸需要预处理的 B F S BFS BFS 搜索,E是调和级数暴力枚举,F是三元环计数。三元环考的比较少,没见过可能会偏难。 A ACM中的A题 思路: 就是枚举每个边变成原来的两倍,然后看看两短边之和是否大于第三边即可。 不能只给最短边乘 2 2 2,比如 1 4 8 这组数据,也不能只给第二短边乘 2 2 2,比

在项目SSH整合时,启动测试时报的警告!

一、tomcat 运行过程中提示: 22:11:07,082 [main] WARN  DTDEntityResolver : recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer

诺瓦星云校招嵌入式面试题及参考答案(100+面试题、10万字长文)

SPI 通信有哪些内核接口? 在嵌入式系统中,SPI(Serial Peripheral Interface,串行外设接口)通信通常涉及以下内核接口: 时钟控制接口:用于控制 SPI 时钟的频率和相位。通过设置时钟寄存器,可以调整 SPI 通信的速度以适应不同的外设需求。数据发送和接收接口:负责将数据从主机发送到从机以及从从机接收数据到主机。这些接口通常包括数据寄存器,用于存储待发