• java实现物流查询(使用阿里云物流查询接口)


    快递物流查询接口【最新版】_快递查询_数据API_电商-云市场-阿里云 (aliyun.com)

    首先进行购买阿里云快递物流查询接口,有免费的,测试的话大家可以购买免费的,非常方便。

     购买完成后,点击进入自己的控制台。就可以看到自己需要的参数数据:

    以及上方提供的接口详情,点进去复制直接用即可。 

     

    对应的接口信息都有,只需对应放入所需参数即可使用。 

     JAVA代码实现:

    获取所有物流的编码,其实不传编码依旧可以查到,95%能自动检测,但是为了百分百保证查到准确的建议传入当前的物流编码:如:中通 --->  zto

    代码中包含,查询物流的编码

    逻辑如下:当发货人员发完货物,应记录商品的发货单号,以及物流编码存入数据库中

    查询时,获取当前订单,当前订单的发货单号,以及物流编码查询详细的物流详情。

    1. import com.alibaba.fastjson2.JSONObject;
    2. import com.furnish.web.wn.vo.R;
    3. import io.swagger.annotations.ApiOperation;
    4. import org.springframework.web.bind.annotation.*;
    5. import java.io.BufferedReader;
    6. import java.io.IOException;
    7. import java.io.InputStream;
    8. import java.io.InputStreamReader;
    9. import java.net.HttpURLConnection;
    10. import java.net.MalformedURLException;
    11. import java.net.URL;
    12. import java.net.UnknownHostException;
    13. import java.util.List;
    14. import java.util.Map;
    15. @RestController
    16. @RequestMapping("/wnapp/wl")
    17. @CrossOrigin
    18. public class WuLiuController {
    19. /**
    20. * 采用阿里云快递物流查询接口 ================
    21. * @param
    22. */
    23. @GetMapping ("/getWl")
    24. public String getWl(String no,String phone ,String type) {//物流码【4】请求参数,不知道可不填 95%能自动识别
    25. //传过来电话的后四位
    26. String host = "https://kdwlcxf.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
    27. String path = "/kdwlcx";// 【2】后缀
    28. //TODO 测试用AppCode 后期需更改正式的
    29. String appcode = "123465"; // 【3】开通服务后 买家中心-查看AppCode
    30. no = no+":"+phone; // 【4】请求参数,物流单号+电话后四位
    31. String urlSend = host + path + "?no=" + no + "&type=" + type; // 【5】拼接请求链接
    32. try {
    33. URL url = new URL(urlSend);
    34. HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
    35. httpURLCon.setRequestProperty("Authorization", "APPCODE " + appcode);// 格式Authorization:APPCODE
    36. // (中间是英文空格)
    37. int httpCode = httpURLCon.getResponseCode();
    38. if (httpCode == 200) {
    39. String json = read(httpURLCon.getInputStream());
    40. // System.out.println("正常请求计费(其他均不计费)");
    41. // System.out.println("获取返回的json:");
    42. // System.out.print(json);
    43. return json;
    44. } else {
    45. Map> map = httpURLCon.getHeaderFields();
    46. String error = map.get("X-Ca-Error-Message").get(0);
    47. if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
    48. System.out.println("AppCode错误 ");
    49. } else if (httpCode == 400 && error.equals("Invalid Url")) {
    50. System.out.println("请求的 Method、Path 或者环境错误");
    51. } else if (httpCode == 400 && error.equals("Invalid Param Location")) {
    52. System.out.println("参数错误");
    53. } else if (httpCode == 403 && error.equals("Unauthorized")) {
    54. System.out.println("服务未被授权(或URL和Path不正确)");
    55. } else if (httpCode == 403 && error.equals("Quota Exhausted")) {
    56. System.out.println("套餐包次数用完 ");
    57. } else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
    58. System.out.println("套餐包次数用完,请续购套餐");
    59. } else {
    60. System.out.println("参数名错误 或 其他错误");
    61. System.out.println(error);
    62. }
    63. }
    64. } catch (MalformedURLException e) {
    65. return "URL格式错误";
    66. } catch (UnknownHostException e) {
    67. return "URL地址错误";
    68. } catch (Exception e) {
    69. // 打开注释查看详细报错异常信息
    70. // e.printStackTrace();
    71. }
    72. return "";
    73. }
    74. /**
    75. * 查询物流编码
    76. * @param type
    77. */
    78. @GetMapping ("/getType")
    79. @ApiOperation("查询物流的公司编码")
    80. public String main(String type) {
    81. String host = "https://kdwlcxf.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
    82. String path = "/cExpressLists";// 【2】后缀
    83. //TODO 个人测试用的,后续需更改正式的
    84. String appcode = "123456"; // 【3】开通服务后 买家中心-查看AppCode
    85. String urlSend = host + path + "?type=" + type; // 【5】拼接请求链接
    86. try {
    87. URL url = new URL(urlSend);
    88. HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
    89. httpURLCon.setRequestProperty("Authorization", "APPCODE " + appcode);// 格式Authorization:APPCODE
    90. // (中间是英文空格)
    91. int httpCode = httpURLCon.getResponseCode();
    92. if (httpCode == 200) {
    93. String json = read(httpURLCon.getInputStream());
    94. System.out.println("正常请求计费(其他均不计费)");
    95. System.out.println("获取返回的json:");
    96. System.out.print(json);
    97. return json;
    98. } else {
    99. Map> map = httpURLCon.getHeaderFields();
    100. String error = map.get("X-Ca-Error-Message").get(0);
    101. if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
    102. System.out.println("AppCode错误 ");
    103. } else if (httpCode == 400 && error.equals("Invalid Url")) {
    104. System.out.println("请求的 Method、Path 或者环境错误");
    105. } else if (httpCode == 400 && error.equals("Invalid Param Location")) {
    106. System.out.println("参数错误");
    107. } else if (httpCode == 403 && error.equals("Unauthorized")) {
    108. System.out.println("服务未被授权(或URL和Path不正确)");
    109. } else if (httpCode == 403 && error.equals("Quota Exhausted")) {
    110. System.out.println("套餐包次数用完 ");
    111. } else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
    112. System.out.println("套餐包次数用完,请续购套餐");
    113. } else {
    114. System.out.println("参数名错误 或 其他错误");
    115. System.out.println(error);
    116. }
    117. }
    118. } catch (MalformedURLException e) {
    119. System.out.println("URL格式错误");
    120. } catch (UnknownHostException e) {
    121. System.out.println("URL地址错误");
    122. } catch (Exception e) {
    123. // 打开注释查看详细报错异常信息
    124. // e.printStackTrace();
    125. }
    126. return "";
    127. }
    128. /*
    129. * 读取返回结果
    130. */
    131. private static String read(InputStream is) throws IOException {
    132. StringBuffer sb = new StringBuffer();
    133. BufferedReader br = new BufferedReader(new InputStreamReader(is));
    134. String line = null;
    135. while ((line = br.readLine()) != null) {
    136. line = new String(line.getBytes(), "utf-8");
    137. sb.append(line);
    138. }
    139. br.close();
    140. return sb.toString();
    141. }
    142. }

  • 相关阅读:
    使用Python实现微信群发每日一句
    美团三年,总结的10条血泪教训
    信安.网络安全.UDP协议拥塞
    学习Vue的入门方法有哪些呢?
    LeetCode 105. 从前序与中序遍历序列构造二叉树(C++)
    对于BFC的理解
    diffusion model(一):DDPM技术小结 (denoising diffusion probabilistic)
    软考高级系统架构设计师系列论文真题四:论高可靠性系统中软件容错技术的应用
    [附源码]JAVA毕业设计框架的电脑测评系统(系统+LW)
    Win10无法访问移动硬盘怎么解决
  • 原文地址:https://blog.csdn.net/Java_Mr_Jin/article/details/126318883