Java集成快递100的订阅服务和根据物流单号查询物流详情的接口。

一、申请快递100授权key

申请地址:https://m.kuaidi100.com/products/api.jsp

二、编写代码

public class Express100Util {
    /**
     * 从快递100中获取物流信息
     *
     * @param logisticsCompanyName 物流公司名
     * @param trackingNumber 物流单号
     * @return
     */
    public static Logistics100VO getNewLogistics(String logisticsCompanyName,
                                                 String trackingNumber) {
        JSONObject jsonStu = JSONObject.fromObject(getKuaidiURL(
                logisticsCompanyName, trackingNumber));
        return (Logistics100VO) JSONObject
                .toBean(jsonStu, Logistics100VO.class);
    }

/**
     * 根据物流公司,获取快递100中的物流公司简称.
     *
     * @param company
     *            String
     * @return
     */
    public static String getLogisticsCompanyShort(String company) {
        if(StringUtil.isNull(company)){
            return null;
        }
        String shortName = null;
        if (company.indexOf("包裹") >= 0 || company.indexOf("平邮") >= 0) {
            shortName = "youzhengguonei";
        } else if (company.toLowerCase().indexOf("ems") >= 0) {
            shortName = "ems";
        } else if (company.toLowerCase().indexOf("北京ems") >= 0) {
            shortName = "bjemstckj";
        } else if (company.indexOf("顺丰") >= 0) {
            shortName = "shunfeng";
        } else if (company.indexOf("申通") >= 0) {
            shortName = "shentong";
        } else if (company.indexOf("圆通") >= 0) {
            shortName = "yuantong";
        } else if (company.indexOf("中通") >= 0) {
            shortName = "zhongtong";
        } else if (company.indexOf("汇通") >= 0) {
            shortName = "huitongkuaidi";
        } else if (company.indexOf("韵达") >= 0) {
            shortName = "yunda";
        } else if (company.indexOf("宅急送") >= 0) {
            shortName = "zhaijisong";
        } else if (company.indexOf("天天") >= 0) {
            shortName = "tiantian";
        } else if (company.indexOf("德邦") >= 0) {
            shortName = "debangwuliu";
        } else if (company.indexOf("国通") >= 0) {
            shortName = "guotongkuaidi";
        } else if (company.indexOf("增益") >= 0) {
            shortName = "zengyisudi";
        } else if (company.indexOf("速尔") >= 0) {
            shortName = "suer";
        } else if (company.indexOf("中铁物流") >= 0) {
            shortName = "ztky";
        } else if (company.indexOf("中铁快运") >= 0) {
            shortName = "zhongtiewuliu";
        } else if (company.indexOf("能达") >= 0) {
            shortName = "ganzhongnengda";
        } else if (company.indexOf("优速") >= 0) {
            shortName = "youshuwuliu";
        } else if (company.indexOf("全峰") >= 0) {
            shortName = "quanfengkuaidi";
        } else if (company.indexOf("京东") >= 0) {
            shortName = "jd";
        } else if (company.indexOf("一统飞鸿") >= 0) {
            shortName = "yitongfeihong";
        } else if (company.indexOf("如风达") >= 0) {
            shortName = "rufengda";
        } else if (company.indexOf("赛澳递") >= 0) {
            shortName = "saiaodi";
        } else if (company.indexOf("海红网送") >= 0) {
            shortName = "haihongwangsong";
        } else if (company.indexOf("通和天下") >= 0) {
            shortName = "tonghetianxia";
        } else if (company.indexOf("郑州建华") >= 0) {
            shortName = "zhengzhoujianhua";
        } else if (company.indexOf("红马甲") >= 0) {
            shortName = "sxhongmajia";
        } else if (company.indexOf("芝麻开门") >= 0) {
            shortName = "zhimakaimen";
        } else if (company.indexOf("乐捷递") >= 0) {
            shortName = "lejiedi";
        } else if (company.indexOf("立即送") >= 0) {
            shortName = "lijisong";
        } else if (company.indexOf("银捷") >= 0) {
            shortName = "yinjiesudi";
        } else if (company.indexOf("门对门") >= 0) {
            shortName = "menduimen";
        } else if (company.indexOf("河北建华") >= 0) {
            shortName = "hebeijianhua";
        } else if (company.indexOf("微特派") >= 0) {
            shortName = "weitepai";
        } else if (company.indexOf("风行天下") >= 0) {
            shortName = "fengxingtianxia";
        } else if (company.indexOf("尚橙") >= 0) {
            shortName = "shangcheng";
        } else if (company.indexOf("新蛋奥硕") >= 0) {
            shortName = "neweggozzo";
        }
        return shortName;
    }

/**
     * 向快递100发送订阅物流单号信息
     *
     * @param companycode
     *            物流公司code-- 非必填,空时将使用autoCom=1进行智能判断物流公司
     * @param number
     *            物流单号-- 必填
     * @param from
     *            出发地-- 非必填
     * @param to
     *            终点-- 非必填
     * @param salt
     *            数字签名-- 非必填
     * */
    public static TaskResponse postOrder(String companycode, String number,
                                         String from, String to, String salt) {
        TaskResponse resp = new TaskResponse();
        ConfigVO vo = new ConfigVO();
        if (!vo.isOpenkuaidi100()) {
            resp.setResult(false);
            resp.setMessage("快递100订阅服务未开启");
            return resp;
        }
        if (StringUtil.isNull(vo.getKuaidi100server())
                || StringUtil.isNull(vo.getKuaidi100callback())
                || StringUtil.isNull(vo.getKuaidi100authkey())) {
            resp.setResult(false);
            resp.setMessage("快递100订阅服务参数配置错误");
            return resp;
        }
        if (StringUtil.isNull(number)) {
            resp.setResult(false);
            resp.setMessage("缺少物流单号");
            return resp;
        }
        if (StringUtil.isNull(salt)) {
            resp.setResult(false);
            resp.setMessage("缺少验证签名");
            return resp;
        }
        TaskRequest req = new TaskRequest();
        req.setCompany(companycode);
        req.setFrom(from == null ? "" : from);
        req.setTo(to == null ? "" : to);
        req.setNumber(number);
        req.getParameters().put("callbackurl", vo.getKuaidi100callback());
        req.getParameters().put("salt", salt);// 签名
        if (StringUtil.isNull(companycode)) {
            req.getParameters().put("autoCom", "1");// companycode为空时智能判断物流公司
        }
        req.setKey(vo.getKuaidi100authkey());

Gson gson = new Gson();

HashMap<String, String> p = new HashMap<String, String>();
        p.put("schema", "json");
        p.put("param", gson.toJson(req));
        try {
            String ret = HttpRequest.postData(vo.getKuaidi100server(), p,
                    "UTF-8");
            resp = gson.fromJson(ret, TaskResponse.class);
            return resp;
        } catch (Exception e) {
            e.printStackTrace();
            resp = new TaskResponse();
            resp.setResult(false);
            resp.setMessage("向快递100发送订阅物流单号信息异常,原因:" + e.getMessage());
            return resp;
        }
    }

// 根据物流单号猜测快递公司
    public static String caiceComcode(String number) {
        if (StringUtil.isNull(number)) {
            return "";
        }
        ConfigVO vo = new ConfigVO();
        if (StringUtil.isNull(vo.getKuaidi100authkey())) {
            return "";
        }
        HashMap<String, String> p = new HashMap<String, String>();
        p.put("num", number);
        p.put("key", vo.getKuaidi100authkey());
        try {
            String ret = HttpRequest.postData(
                    "http://www.kuaidi100.com/autonumber/auto", p, "UTF-8");
            if (StringUtil.isNull(ret)) {
                return "";
            }
            List<Map<String, Object>> comcodes = new ArrayList<Map<String, Object>>();
            comcodes = new Gson().fromJson(ret,
                    new TypeToken<List<Map<String, Object>>>() {
                    }.getType());
            if (comcodes == null || comcodes.size() == 0) {
                return "";
            }
            return comcodes.get(0).get("comCode").toString();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

public static String getKuaidiURL(String com, String nu) {
        Object urlStream = null;

try {
            URL url = new URL("http://www.kuaidi100.com/query?type=" + com + "&postid=" + nu);
            URLConnection con = url.openConnection();
            con.setAllowUserInteraction(false);
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
            StringBuffer bankXmlBuffer = new StringBuffer();

String inputLine;
            while((inputLine = in.readLine()) != null) {
                bankXmlBuffer.append(inputLine);
            }

in.close();
            String var9 = bankXmlBuffer.toString();
            return var9;
        } catch (MalformedURLException var19) {
            var19.printStackTrace();
        } catch (IOException var20) {
            var20.printStackTrace();
        } finally {
            if (urlStream != null) {
                try {
                    ((InputStream)urlStream).close();
                } catch (IOException var18) {
                    var18.printStackTrace();
                }
            }

}

return null;
    }

public static String getKuaidiStr(String com, String nu) {
        Object urlStream = null;

try {
            URL url = new URL("http://api.kuaidi100.com/api?id=39bd32ddaf73529e&com=" + com + "&nu=" + nu + "&show=0&muti=1&order=desc");
            URLConnection con = url.openConnection();
            con.setAllowUserInteraction(false);
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF8"));
            StringBuffer bankXmlBuffer = new StringBuffer();

String inputLine;
            while((inputLine = in.readLine()) != null) {
                bankXmlBuffer.append(inputLine);
            }

in.close();
            String var9 = bankXmlBuffer.toString();
            return var9;
        } catch (MalformedURLException var19) {
            var19.printStackTrace();
        } catch (IOException var20) {
            var20.printStackTrace();
        } finally {
            if (urlStream != null) {
                try {
                    ((InputStream)urlStream).close();
                } catch (IOException var18) {
                    var18.printStackTrace();
                }
            }

}

return null;
    }

}

三、测试

13:56:16.520 [main] DEBUG org.apache.commons.beanutils.converters.ArrayConverter -     No conversion required, value is already a java.net.URL[]
nu=773043651240219;message=ok;comcontact=null;ischeck=1;com=shentong;condition=F00;status=200;state=3;data=[net.sf.ezmorph.bean.MorphDynaBean@402f32ff[
  {ftime=2020-04-05 10:24:03, context=[芜湖市]已签收,其他:退商家,投递员:吴**,电话:1825*****7, location=芜湖市, time=2020-04-05 10:24:03}
], net.sf.ezmorph.bean.MorphDynaBean@573f2bb1[
  {ftime=2020-04-05 10:23:25, context=[芜湖市]【邮政芜湖市五显支局】安排投递,投递员:吴**,电话:1825*****7,揽投部电话:0553-58****, location=芜湖市, time=2020-04-05 10:23:25}
], net.sf.ezmorph.bean.MorphDynaBean@5ae9a829[
  {ftime=2020-04-05 08:17:36, context=[芜湖市]【邮政芜湖市五显支局】代收入库,正在安排投递, location=芜湖市, time=2020-04-05 08:17:36}
], net.sf.ezmorph.bean.MorphDynaBean@6d8a00e3[
  {ftime=2020-04-05 07:37:37, context=[芜湖市]离开【芜湖邮件处理中心】,下一站【邮政芜湖市五显支局】, location=芜湖市, time=2020-04-05 07:37:37}
], net.sf.ezmorph.bean.MorphDynaBean@548b7f67[
  {ftime=2020-04-04 19:08:28, context=[芜湖市]到达【芜湖邮件处理中心】, location=芜湖市, time=2020-04-04 19:08:28}
], net.sf.ezmorph.bean.MorphDynaBean@7ac7a4e4[
  {ftime=2020-04-04 19:03:55, context=[芜湖市]离开【包裹快递部】,下一站【芜湖邮件处理中心】, location=芜湖市, time=2020-04-04 19:03:55}
], net.sf.ezmorph.bean.MorphDynaBean@6d78f375[
  {ftime=2020-04-04 16:26:56, context=[芜湖市]【包裹快递部】已收件,揽投员:郑**,电话:1517****85, location=芜湖市, time=2020-04-04 16:26:56}
]]
2020-04-05 10:24:03
2020-04-05 10:23:25
2020-04-05 08:17:36
2020-04-05 07:37:37
2020-04-04 19:08:28
2020-04-04 19:03:55
2020-04-04 16:26:56

Process finished with exit code 0

完整项目请参考http://www.zrscsoft.com/sitepic/12104.html

Java集成快递100的订阅服务和根据物流单号查询物流详情的接口相关推荐

  1. java根据物流单号查询物流详细

    java根据物流单号查询物流信息 package com.yoyo.expressage.controller; import com.alibaba.fastjson.JSON; import co ...

  2. Java快递物流查询接口,怎么接入物流接口API,如何根据单号查询物流跟踪的详细信息的Demo详细说明。

    Java怎么写物流接口,怎么接入物流接口,如何根据单号查询物流跟踪的详细信息 1. 需求 根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递Api接口,实现自动查询的功能 2. demo实 ...

  3. Java快递物流查询接口,怎么接入物流接口API,如何根据单号查询物流跟踪的详细信息的Demo详细说明

    Java怎么写物流接口,怎么接入物流接口,如何根据单号查询物流跟踪的详细信息 实现需求: 根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递Api接口,实现自动查询的功能 应用场景 实现的 ...

  4. 快递鸟全球物流单号查询api接口

    快递鸟全球物流单号查询API接口旨在为电商.电商平台.物流工具.打单工具.仓储系统.移动APP等系统提供专业.稳定.优质的API 接口服务,满足不同用户的物流管理需求.本文档就各个API接口进行详细说 ...

  5. 物流信息根服务器,SHOPEX快递物流单号查询插件 v8.2

    SHOPEX快递物流单号查询插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅急送快递.德邦物流.百世快递.汇通快递.中通快递.天天快递等知名 ...

  6. 教你快递单号查询物流,并分析物流

    当大批量的快递单号产生后,要怎么跟踪物流到哪里了,当官网支持一次查询十个单号物流,无法满足查询需求时,该如何跟踪发现快递延误.或者丢失这样那样的情况概率发生呢?下面就为大家分享一个批量查快递单号物流, ...

  7. 快递单号查询物流操作流程

    当你有大量的单号需要查询物流,如何快速查询呢?下面为大家安利一个查询每个快递单号物流实用的技巧,下面一起看操作流程,一起去试试吧. 首先我们要用到的是[快递批量查询高手],在浏览器上搜索,即可下载安装 ...

  8. 如何一次性导出查询好的快递单号以及物流详情

    最近有很多朋友在问,如何查物流,并将查询好的所有单号以及物流详情以导出表格的形式保存到电脑上呢?不知道如何操作的宝贝们,下面一起来试试吧. 材料准备: 一台Win系统的电脑 快递单号若干 步骤演示: ...

  9. java对接快递100追踪物流信息

    1.官网地址 快递100API开放平台_快递100快递单号查询API接口_快递100API_快递电子面单接口_寄快递接口 2.从官网下载java示例代码 3.调用 @CrossOrigin@Respo ...

  10. Java集成移动云短信服务

    1.短信服务流程 1. 1 流程图 1.2 跟上面流程步骤进行操作 1.3 全部按输入完成后点击获取验证码,会弹出行为验证码 Java集成行为验证码 1.4 行为验证码验证成功后,会发送验证码到手机上 ...

最新文章

  1. 阿里P8大牛耗费三年整理的:Java大厂面试题
  2. python 仿真实验_生成仿真的演化网络实验【Python版】
  3. liblfds 测试
  4. SSZipArchive的使用详解和遇到的问题
  5. ERROR org.hibernate.hql.internal.ast.ErrorCounter unexpected token: form 异常解决
  6. Windows 上安装 Scala
  7. 打开文件对话框在xp和win7上的实现文件任意多选
  8. ai面试的优缺点_面试官:因为这一步,我淘汰了90%的应届生
  9. 万网域名注册促销活动 - 阿里云域名优惠口令免费获取
  10. cpc按点击计算怎么算_亚马逊CR怎么算?亚马逊CR及CTR计算公式介绍
  11. 股票量化分析工具QTYX使用攻略——北上资金持仓选股(更新2.5.8)
  12. bailian.openjudge 2692:假币问题
  13. redit mysql_如何搭建自己的网站?
  14. css如何去掉或修改浏览器默认滚动条
  15. oracle ora-01403
  16. 医院主要支付方式及其风险分析
  17. Nginx根据域名分发不同端口
  18. 最新JAVA安装教程(Mac版)
  19. 管理pod的nat策略
  20. 燕秀计算机打印区域文字高度,CAD 让文字显示在指定区域,自动根据文字内容调整文字高度...

热门文章

  1. 稠密检索模型的zero-shot能力究竟如何?
  2. 推荐系统给电影评分排名的方法
  3. 2、图片亮度,对比度,饱和度,明度调整 transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
  4. php mail cc,邮件cc是什么意思
  5. linux的shell版url爬虫
  6. 【期末复习】现代管理科学基础
  7. E45: ‘readonly‘ option is set (add to override) 解决方法
  8. 轻松容易记住外贸出口全流程,适用于外贸新手最佳
  9. 如何快速打开.pos
  10. XP系统安装打印机提示未安装打印机驱动程序,操作无法完成.