java根据物流单号查询物流信息
package com.yoyo.expressage.controller;
import com.alibaba.fastjson.JSON;
import com.yoyo.expressage.resquest.KdNiaoDto;
import com.yoyo.expressage.util.KdNiaoUtil;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class KDNiao {
//以圆通快递测试
static final String fastId ="YTO";
static final String fastName="圆通快递";
@ApiOperation(value = "获取的物流跟踪数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "traceId", paramType = "query", value = "快递单号", required = true, dataType = "String"), })
@GetMapping(value = "/getKdNiaoFastList")
public Object getKdNiao( @RequestParam(value = "traceId") String traceId) throws Exception {
if(StringUtils.isEmpty(traceId)){
return new Exception("快递单号不能为空");
}
//接入第三方快递鸟 获取物流状态
String json = KdNiaoUtil.getOrderTracesByJson(fastId,traceId);
if (json == null)
throw new Exception("物流信息不存在");
KdNiaoDto kdNiaoDto = JSON.parseObject(json, KdNiaoDto.class);
// 物流状态(0:无轨迹 ,1已揽收 2在途中 3签收 4问题件)
if ("false".equals(kdNiaoDto.getSuccess()))
throw new Exception("不支持该运单号,请到官网查询");
Map<String, Object> map = new HashMap<>();
map.put("fastName",fastName);
map.put("traceId", traceId);
map.put("state", kdNiaoDto.getState());
map.put("success", kdNiaoDto.getSuccess());
map.put("dataList", kdNiaoDto.getTraces());
return map;
}
}
package com.yoyo.expressage.util;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
/**
* 整合第三方物流(快递鸟)接口的工具类
*/
public class KdNiaoUtil {
//快递鸟官网自己申请一个账号
private static String URL = "";
private static String EBUSINE