当前位置: 首页 > news >正文

Java对接快递100实时快递单号查询API接口

目录

1.引入依赖

2.定义配置信息

3.模块结构

4.Controller

5.Service实现类

6.返回数据dto以及dto中的数据dto

7.测试运行


今天也是接到了这个任务,官网有小demo,可以下载下来参考test中代码

官方文档地址:

实时快递查询接口技术文档-快递100API开放平台

1.引入依赖

        <!--快递100--><dependency><groupId>com.github.kuaidi100-api</groupId><artifactId>sdk</artifactId><version>1.0.11</version></dependency>

2.定义配置信息

这个要到官网申请 注册-快递100API开放平台|快递接口免费申请

#快递100配置信息
kuaidi100:key: *******customer: **********

3.模块结构

具体用到这些类,官方demo里有的我就不展示了

4.Controller

package cn.homed.shop.express100.web;import cn.homed.common.entity.MsgBean;
import cn.homed.shop.express100.service.Express100Service;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api/dim/express100/")
@Tag(name ="快递100", description = "v-1.3 -- 快递100")
public class Express100Controller {@Autowiredprivate Express100Service express100Service;@Operation(summary = "根据快递单号查询物流信息",description = "根据快递单号查询物流信息")@RequestMapping(value = "/findOrder", method = RequestMethod.GET)public MsgBean findOrder(@RequestParam(value = "orderId", required = true) String orderId,@RequestParam(value = "tplCode", required = true) String tplCode) {return express100Service.findOrder(orderId,tplCode);}}

5.Service实现类

package cn.homed.shop.express100.service.impl;import cn.homed.common.entity.MsgBean;
import cn.homed.shop.express100.dto.Express100DTO;
import cn.homed.shop.express100.service.Express100Service;
import cn.homed.shop.express100.utils.SignUtils;
import com.google.gson.Gson;
import com.kuaidi100.sdk.api.QueryTrack;
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;/*** 快递100* @author yang* @version 1.0.0*/@Service
public class Express100ServiceImpl implements Express100Service {@Value("${kuaidi100.key}")private String key;@Value("${kuaidi100.customer}")private String customer;@Overridepublic MsgBean findOrder(String orderId,String tplCode) {Express100DTO response = null;try {QueryTrackReq queryTrackReq = new QueryTrackReq();QueryTrackParam queryTrackParam = new QueryTrackParam();queryTrackParam.setCom(tplCode);queryTrackParam.setNum(orderId);String param = new Gson().toJson(queryTrackParam);queryTrackReq.setParam(param);queryTrackReq.setCustomer(customer);queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));IBaseClient baseClient = new QueryTrack();HttpResult execute = baseClient.execute(queryTrackReq);// 对返回的数据进行反序列化处理Gson gson = new Gson();String responseBody = execute.getBody();response = gson.fromJson(responseBody, Express100DTO.class);} catch (Exception e) {e.printStackTrace();}assert response != null;return MsgBean.success(response.getData(),"查询物流信息成功");}}

6.返回数据dto以及dto中的数据dto

用于反序列化

package cn.homed.shop.express100.dto;import lombok.Data;
import lombok.ToString;
import java.util.List;/*** 快递100DTO*/@Data
@ToString
public class Express100DTO {private String message;private String nu;private String ischeck;private String com;private String status;private List<LogisticsInfoDTO> data;}
package cn.homed.shop.express100.dto;import lombok.Data;
import lombok.ToString;/*** 快递100DTO*/@Data
@ToString
public class LogisticsInfoDTO {private String time;private String ftime;private String context;}

7.测试运行

可以看到也是查询到了数据

这里传快递单号可以参考contant包下的CompanyConstant

点个赞再走吧~ 

http://www.lryc.cn/news/311484.html

相关文章:

  • Redis常见的15个【坑】,避坑指南
  • 04. Nginx入门-Nginx WEB模块
  • Python在信息安全领域中具有重要的作用
  • Linux 定时备份文件到另一台服务器
  • C++输入输出(I\O)
  • 基本设计模式
  • 双通道音频功率放大电路,外接元件少, 通道分离性好,3V 的低压下可正常使用——D2025
  • Linux 内核获取函数size
  • Python+neo4j构建豆瓣电影知识图谱
  • DolphinScheduler——介绍及架构设计
  • 【Python】约瑟夫环问题
  • Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘
  • 基于springboot+vue的医院药品管理系统
  • Python爬虫——Urllib库-1
  • 瑞_Redis_短信登录(一)
  • 《剑指 Offer》专项突破版 - 面试题 70 : 排序数组中只出现一次的数字(C++ 实现)
  • Linux安全加固功能
  • 最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画
  • 【服务器数据恢复】昆腾存储中raid5磁盘阵列数据恢复案例
  • 企业微信变更主体怎么改?
  • 常用生理眼电信号整理合集 (EOG)
  • 【场景题】让你设计一个订单号生成服务,该怎么做?
  • 使用GraphView实现简单的绘图工具
  • javaWebssh教师荣誉库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  • Android minigbm框架普法
  • 01、MongoDB -- 下载、安装、配置文件等配置 及 副本集配置
  • uniapp中导入css和scss的区别
  • RabbitMQ-TTL/死信队列/延迟队列高级特性
  • docker安装php7.4安装(swoole)
  • 身份证识别系统(安卓)