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

news2024/11/16 7:46:58

目录

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 {

    @Autowired
    private 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;

    @Override
    public 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.coloradmin.cn/o/1490897.html

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

相关文章

探索Python编程世界:从入门到精通

一.Python 从入门到精通 随着计算机科学的发展&#xff0c;编程已经成为了一种必备的技能。而 Python 作为一种简单易学、功能强大的编程语言&#xff0c;越来越受到人们的喜爱。本文将为初学者介绍 Python 编程的基础知识&#xff0c;帮助他们踏入 Python 编程的大门&#xf…

Nexus Repository的搭建

一、前言 Nexus Repository用于管理maven的jar包。java开发程序员每天都在使用&#xff0c;但是自己搭建或者管理的就很少。除非你是系统架构师。因为这一套东西&#xff0c;基本是搭建一次就不需要人来搭建了&#xff0c;日后打开界面维护的机会也很少&#xff0c;我们只需要…

【QT】在窗口中添加按钮

在窗口中添加按钮 创建一个QT程序&#xff0c;首先要做什么&#xff1f; 先创建一个应用程序类创建一个窗口类 在窗口中添加按钮 添加头文件&#xff1a;#include 没有设置按钮标题的函数&#xff0c;是因为它继承了父类&#xff0c;设置标题的函数在父类中。 因为好多子类…

低代码平台开发——基于React(文末送书)

目录 小程一言适用对象本书达成 书籍介绍作者简介内容介绍书籍目录阅读指导 小程送书 小程一言 《低代码平台开发——基于React》这本书主要围绕低代码平台和React技术的结合展开&#xff0c;为读者提供了关于低代码平台开发的理论和实践知识。 ## 书中内容简介 书中内容分为…

[前端][死循环]问题发现[easyui]

文章目录 问题描述问题细节 解决思路综合分析 解决办法 问题描述 页面点击按钮跳转弹窗页面回显出数据 此弹窗页面中有年份&#xff0c;类型等&#xff0c;当选中年份/类型会重新触发回显方法(onSelect 中调用方法)&#xff0c;回显对应年份/类型得数据 问题细节 最开始调试…

4G/5G执法记录仪、智能安全帽走国标GB28181接入海康、宇视等大平台,也可走平台与平台对接,以下级平台级联到上级大平台

AIoT万物智联&#xff0c;智能安全帽生产厂家&#xff0c;执法记录仪生产厂家&#xff0c;智能安全帽、智能头盔、头盔记录仪、执法记录仪、智能视频分析/边缘计算AI盒子、车载DVR/NVR、布控球、智能眼镜、智能手电、无人机4G补传系统等统一接入大型融合通信可视指挥调度平台VM…

RabbitMQ如何保证消息不丢

如何保证Queue消息能不丢呢&#xff1f; RabbitMQ在接收到消息后&#xff0c;默认并不会立即进行持久化&#xff0c;而是先把消息暂存在内存中&#xff0c;这时候如果MQ挂了&#xff0c;那么消息就会丢失。所以需要通过持久化机制来保证消息可以被持久化下来。 队列和交换机的…

WebGIS开发0基础必看教程:地图显示——通过行列号来换算出多种瓦片的URL之离线地图

1.前言 在前面我花了两个篇幅来讲解行列号的获取&#xff0c;也解释了为什么要获取行列号。在这一章&#xff0c;我将把常见的几种请求瓦片时的URL样式罗列出来&#xff0c;并且给出大致的解释。 我在这里将地图分为离线地图和在线地图。所谓离线地图&#xff0c;即保存在本地…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:文本通用)

文本通用属性目前只针对包含文本元素的组件&#xff0c;设置文本样式。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 属性 名称参数类型描述fontColorResourceColor设置字体颜色。 从API version 9开…

亚信安慧AntDB:数据库自主创新的缩影

AntDB作为一款自主研发的数据库系统&#xff0c;具备了国产化升级改造的核心能力。这款数据库系统通过不懈努力和持续探索&#xff0c;实现了从跟随他人到引领潮流的华丽转身。AntDB不仅仅是一种技术产品&#xff0c;更是体现了自主研发能力的缩影&#xff0c;体现了科技企业在…

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

express+mysql+vue,从零搭建一个商城管理系统10--添加商品

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、新建models/goods.js二、新建routes/goods.js三、添加goods表四、添加商品总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写service部分 一、新建models/goods.js models/goods.js con…

(二十一)从零开始搭建k8s集群——kubernates核心组件及功能介绍

前言 Kubernetes是一个可移植、可扩展、开源的平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;它促进了声明性配置和自动化。Kubernetes容器可以持续开发、集成和部署&#xff1a;可靠且频繁地构建和部署容器镜像&#xff0c;快速有效地回滚&#xff1b;开发与运…

【MGR】MySQL Group Replication快速开始

目录 17.2 Getting Started 17.2.1 Deploying Group Replication in Single-Primary Mode 17.2.1.1 Deploying Instances for Group Replication 17.2.1.2 Configuring an Instance for Group Replication Storage Engines Replication Framework Group Replication Sett…

【Git】项目源码迁移到另一个gitlab(保留原来提交历史记录)

目录 前情提要迁移方案IDEA远程仓库管理团队其他成员切换gitgit命令操作界面 前情提要 公司原来是自己私有部署的gitlab。有了研发云后就希望将代码推送到研发云的代码仓库上。这时候需要迁移并保留原来提交的历史记录。 迁移方案 登录新的gitlab(代码仓库)新建空白项目获取…

hive sql无法停止

排查流程 hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的 其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。 同时&#xff0c;通过JDK动态代理为其织入了synchronized同步机制&#xff1a;其底层是委托给…

进入软件测试行业,这些问题你一定要知道!

很多转行的朋友都会选择进入软件测试开发行业&#xff0c;如果确定进入软件测试开发行业&#xff0c;那么这些问题你一定要知道&#xff01; 一、软件测试发展前景 1、测试人员与开发人员的配比已经从最初的1:10、1:8&#xff0c;发展到如今的1:3、1:2。未来会继续趋于平衡&…

flink重温笔记(十):Flink 高级 API 开发——flink 四大基石之 State(涉及Checkpoint)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 10 天啦&#xff01;学习了 flink 四大基石之 State &#xff08;状态&#xff09;&#xff0c;主要是解决大数据领域增量计算的效果&#xff0c;能够保存已经计算过的结果数据状态&#xff01;重点学习了 state 的类型划…

ABAP - SALV教程12 显示图标和提示信息

ALV要求字段的值为图标的需求并不多见&#xff0c;一般都用于红黄绿灯&#xff0c;来表示单据的执行状态&#xff0c;添加图标的方式也可以实现红黄绿灯的功能&#xff0c;也可以参考SALV实现红黄绿灯这篇文章&#xff1a;http://t.csdnimg.cn/Dzx7x效果图SAVL列设置为图标图标…

1688淘宝天猫无货源API(商品列表、商品详情、店铺商品、sku)

item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_search 按关键字搜索淘宝商品item_search_img 按图搜索淘宝商品&#xff08;拍立淘&#xff09;item_search_shop 获得店铺的所有商品item_search_seller 搜索店铺列表 API公共…