使用第三方接口,查询实时快递单号

news2024/9/25 9:40:09

开通接口服务 全国快递物流查询-快递查询接口【最新版】_自动识别接口_快递查询_数据API-云市场-阿里云

RestTemplate:

RestTemplate是Spring框架中的一个用于发送HTTP请求的客户端工具类。它提供了丰富的方法来发送GET、POST、PUT、DELETE等类型的HTTP请求,并支持同步和异步两种方式。使用RestTemplate可以方便地与RESTful Web服务进行交互。

创建一个测试类:

    /**
     * 快递物流
     */
    @Test
    public void testExpress() {
        String host = "https://wuliu.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
        String path = "/kdi";  // 【2】后缀
        String appcode = "输入你的appcode"; // 【3】开通服务后 买家中心-查看AppCode
        String no = "快递单号";// 【4】请求参数,详见文档描述
        String url = host + path + "?no=" + no;
        RestTemplate restTemplate = new RestTemplate();

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", "APPCODE " + appcode);
        HttpEntity<String> entity = new HttpEntity<>(headers);

        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
        String body = response.getBody();
        System.out.println(body);
    }

测试结果:

使用原生Java代码实现发送Http请求:

(以下代码是第三方平台提供的测试类)

import org.junit.jupiter.api.Test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;

public class ExpressToolTest {

    @Test
    public void getExpressSMS() {
        String host = "https://wuliu.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
        String path = "/kdi";  // 【2】后缀
        String appcode = "输入你的appcode"; // 【3】开通服务后 买家中心-查看AppCode
        String no = "快递单号";// 【4】请求参数,详见文档描述
//        String type = "yt"; //  【4】请求参数,不知道可不填 95%能自动识别
//        String urlSend = host + path + "?no=" + no +"&type="+type;  // 【5】拼接请求链接
        String urlSend = host + path + "?no=" + no;  // 【5】拼接请求链接
        try {
            URL url = new URL(urlSend);
            HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
            httpURLCon .setRequestProperty("Authorization", "APPCODE " + appcode);// 格式Authorization:APPCODE (中间是英文空格)
            int httpCode = httpURLCon.getResponseCode();
            if (httpCode == 200) {
                String json = read(httpURLCon.getInputStream());
                System.out.println("正常请求计费(其他均不计费)");
                System.out.println("获取返回的json:");
                System.out.print(json);
            } else {
                Map<String, List<String>> map = httpURLCon.getHeaderFields();
                String error = map.get("X-Ca-Error-Message").get(0);
                if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
                    System.out.println("AppCode错误 ");
                } else if (httpCode == 400 && error.equals("Invalid Url")) {
                    System.out.println("请求的 Method、Path 或者环境错误");
                } else if (httpCode == 400 && error.equals("Invalid Param Location")) {
                    System.out.println("参数错误");
                } else if (httpCode == 403 && error.equals("Unauthorized")) {
                    System.out.println("服务未被授权(或URL和Path不正确)");
                } else if (httpCode == 403 && error.equals("Quota Exhausted")) {
                    System.out.println("套餐包次数用完 ");
                } else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
                    System.out.println("套餐包次数用完,请续购套餐");
                } else {
                    System.out.println("参数名错误 或 其他错误");
                    System.out.println(error);
                }
            }

        } catch (MalformedURLException e) {
            System.out.println("URL格式错误");
        } catch (UnknownHostException e) {
            System.out.println("URL地址错误");
        } catch (Exception e) {
            // 打开注释查看详细报错异常信息
            // e.printStackTrace();
        }

    }

    /*
     * 读取返回结果
     */
    private String read(InputStream is) throws IOException {
        StringBuffer sb = new StringBuffer();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = null;
        while ((line = br.readLine()) != null) {
            line = new String(line.getBytes(), "utf-8");
            sb.append(line);
        }
        br.close();
        return sb.toString();
    }
}

 测试结果:

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

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

相关文章

Java内存区域详解

一、Java内存区域划分 1、分为运行时数据区域和本地内存 运行时数据区域是指 Java 虚拟机在运行 Java 程序时使用的不同内存区域&#xff0c;由虚拟机动态管理。本地内存是指由操作系统分配和管理的内存区域&#xff0c;它与虚拟机无关。在 Java 中&#xff0c;本地内存通常用…

生信网络学院|05月10日《全新DWG/DXF文件编辑工具——DraftSight Enterprise》

课程主题&#xff1a;全新DWG/DXF文件编辑工具——DraftSight Enterprise 课程时间&#xff1a;2024年05月10日 14:00-14:30 主讲人&#xff1a;任宇泽 生信科技 解决方案顾问 DraftSight介绍图形用户界面通用命令自定义块尺寸标注导入、导出和附加图纸集管理器Power Tools机…

大学生租房|基于Springboot+vue的大学生租房平台(源码+数据库+文档)

大学生租房平台 目录 基于Springbootvue的大学生租房平台 一、前言 二、系统设计 三、系统功能设计 1 管理员功能实现 5.1.1 房东管理 2 房东功能实现 5.2.1 信息审批管理 3 用户功能实现 5.3.1 房源信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计…

半导体制冷片厂商正元泰达授权世强硬创代理,产品制冷率高寿命长

近日&#xff0c;为扩充旗下产品创新及供应平台世强硬创的半导体制冷片产品&#xff0c;满足硬科技企业不同层次的选择&#xff0c;世强先进&#xff08;深圳&#xff09;科技股份有限公司&#xff08;下称“世强先进”&#xff09;与正元泰达科技&#xff08;深圳&#xff09;…

PG 全页写

1.什么是全页写 修改一个块的时候&#xff0c;把块读到内存中&#xff0c;commit后,WAL写进程会触发写&#xff0c;把修改的块写到WAL日志文件&#xff0c;如果再往这个块中插入一条数据&#xff0c;数据缓冲区里面的块有两条数据了&#xff0c;再次commit后&#xff0c;PG会把…

最新AI实景自动无人直播软件招商加盟:引领直播行业的智能化未来;商家最新拓客工具

随着直播行业的迅速发展&#xff0c;AI实景自动无人直播软件正日益成为商家推广的新宠。该软件具备智能讲解、一键开播和智能回复功能&#xff0c;同时支持手机拍摄真实场景或自行搭建虚拟场景&#xff0c;给观众带来更好的观赏体验。在不断变化的市场竞争中&#xff0c;AI实景…

js浏览器请求,post请求中的参数形式和form-data提交数据时数据格式问题(2024-05-06)

浏览器几种常见的post请求方式 Content-Type 属性规定在发送到服务器之前应该如何对表单数据进行编码。 默认表单数据会编码为 "application/x-www-form-urlencoded" post请求的参数一般放在Body里。 Content-Type&#xff08;内容类型&#xff09;&#xff0c;一般…

论文精读-存内计算芯片研究进展及应用

文章目录 论文精读-存内计算芯片研究进展及应用概述背景介绍前人工作 存内计算3.1 SRAM存内计算3.2 DRAM存内计算3.3 ReRAM/PCM存内计算3.4 MRAM存内计算3.5 NOR Flash存内计算3.6 基于其他介质的存内计算3.7 存内计算芯片应用场景 总结QA 论文精读-存内计算芯片研究进展及应用…

“A”分心得:我的云计算HCIE学习之路

大家好&#xff0c;我是誉天云计算HCIE周末班梁同学&#xff0c;在誉天老师和同学们的帮助下&#xff0c;我终于在4月24日顺利通过了云计算3.0 HCIE的认证考试&#xff0c;而且获得了A&#xff0c;这是让我特别惊喜的&#xff0c;功夫不负有心人。 我日常的工作是网络运维&…

Merck:mPAGE® Lux SDS-PAGE制胶系统

相对于传统SDS-PAGE制胶工艺&#xff0c;Merck公司的mPAGE Lux制胶系统是一种更快速、简单、安全的替代方法&#xff0c;可实现更具可重现性的结果。mPAGE Lux制胶系统可在90秒内完成小型凝胶固化&#xff0c;而传统方法则需要90分钟以上。该系统采用紫外线照射快速制胶工作流程…

Activity工作流基本知识点

1.概念 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的…

java:File类概述和构造方法

一、File类概述和构造方法 1.File类的概述 File&#xff1a;它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的对File而言&#xff0c;其封装并不是一个真正存在的文件&#xff0c;仅仅是一个路径名而已。它可以是存在的&#xff0c;也可以是不存在的。…

flink sql 优化

文章目录 一、参数方面二、资源方面三、总结 提示&#xff1a;实时flink sql 参考很多网上方法与自己实践方法汇总(版本:flink1.13) 一、参数方面 flink sql参数配置 //关闭详细算子链(默认为true),true后job性能会略微有提升。false则可以展示更详细的DAG图方便地位性能结点…

Xshell生成ssh密钥及使用

目录 1. 概述2. 环境3. 步骤3.1 生成密钥3.2 部署密钥3.3 使用密钥 1. 概述 使用Xshell软件生成ssh秘钥&#xff0c;正常连接服务器。 2. 环境 Xshell 6 3. 步骤 3.1 生成密钥 1. 打开Xshell --> 工具 --> 新建用户密钥生成向导 2. 选择密钥类型&#xff0c;建议…

如何更好的使用cpm

nvidia发布了RAFT库&#xff0c;支持向量数据库的底层计算优化&#xff0c;RAFT 也使用CMake Package Manager( CPM )和rapids-cmake管理项目&#xff0c;可以方便快捷的下载到需要的对应版本的thirdparty的依赖库&#xff0c;但是&#xff0c;一般情况下&#xff0c;项目是直接…

c++11 标准模板(STL)本地化库 - 平面类别(std::num_get) - 从输入字符序列中解析数字值

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 从输入字符序列中解析数字值 std::num_get template< cl…

【Python时序预测系列】粒子群算法(PSO)优化LSTM实现单变量时间序列预测(案例+源码)

这是我的第272篇原创文章。 一、引言 粒子群算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种启发式优化算法&#xff0c;可以用于优化神经网络模型的参数。在优化长短期记忆网络&#xff08;Long Short-Term Memory, LSTM&#xff09;时&#xff0c;可以结…

JetPack之ViewModel+LiveData

目录 一、概述二、LiveData 使用2.1 创建 LiveData 对象2.2 观察 LiveData 对象2.3 更新 LiveData 对象 三、编写 LiveData Demo3.1 不使用 LiveData3.2 使用 MutableLiveData3.3 使用 MediatorLiveData3.3.1 监听 2 个数据源的变化3.3.2 编写模拟 2 个数据源更新的代码 四、Vi…

4月威胁态势 | 0day占比82%!Polyransom勒索家族强势来袭

近日&#xff0c;亚信安全正式发布《2024年4月威胁态势报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;报告显示&#xff0c;4月份新增安全漏洞1260个&#xff0c;涉及0day漏洞占82%&#xff1b;监测发现当前较活跃的勒索病毒家族是Polyransom和Blocker&#xff0…