快递物流查询接口【最新版】_快递查询_数据API_电商-云市场-阿里云 (aliyun.com)
首先进行购买阿里云快递物流查询接口,有免费的,测试的话大家可以购买免费的,非常方便。
购买完成后,点击进入自己的控制台。就可以看到自己需要的参数数据:
以及上方提供的接口详情,点进去复制直接用即可。
对应的接口信息都有,只需对应放入所需参数即可使用。
JAVA代码实现:
获取所有物流的编码,其实不传编码依旧可以查到,95%能自动检测,但是为了百分百保证查到准确的建议传入当前的物流编码:如:中通 ---> zto
代码中包含,查询物流的编码
逻辑如下:当发货人员发完货物,应记录商品的发货单号,以及物流编码存入数据库中。
查询时,获取当前订单,当前订单的发货单号,以及物流编码查询详细的物流详情。
- import com.alibaba.fastjson2.JSONObject;
- import com.furnish.web.wn.vo.R;
- import io.swagger.annotations.ApiOperation;
- import org.springframework.web.bind.annotation.*;
-
- 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;
-
- @RestController
- @RequestMapping("/wnapp/wl")
- @CrossOrigin
- public class WuLiuController {
-
- /**
- * 采用阿里云快递物流查询接口 ================
- * @param
- */
- @GetMapping ("/getWl")
- public String getWl(String no,String phone ,String type) {//物流码【4】请求参数,不知道可不填 95%能自动识别
-
- //传过来电话的后四位
- String host = "https://kdwlcxf.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
- String path = "/kdwlcx";// 【2】后缀
- //TODO 测试用AppCode 后期需更改正式的
- String appcode = "123465"; // 【3】开通服务后 买家中心-查看AppCode
- no = no+":"+phone; // 【4】请求参数,物流单号+电话后四位
- String urlSend = host + path + "?no=" + no + "&type=" + type; // 【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);
- return json;
- } else {
- Map
> 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) {
- return "URL格式错误";
- } catch (UnknownHostException e) {
- return "URL地址错误";
- } catch (Exception e) {
- // 打开注释查看详细报错异常信息
- // e.printStackTrace();
- }
- return "";
- }
-
- /**
- * 查询物流编码
- * @param type
- */
- @GetMapping ("/getType")
- @ApiOperation("查询物流的公司编码")
- public String main(String type) {
-
- String host = "https://kdwlcxf.market.alicloudapi.com";// 【1】请求地址 支持http 和 https 及 WEBSOCKET
- String path = "/cExpressLists";// 【2】后缀
- //TODO 个人测试用的,后续需更改正式的
- String appcode = "123456"; // 【3】开通服务后 买家中心-查看AppCode
-
- String urlSend = host + path + "?type=" + type; // 【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);
- return json;
- } else {
- Map
> 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();
- }
- return "";
- }
-
- /*
- * 读取返回结果
- */
- private static 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();
- }
- }