声明:此嵌入方式基于快递100 api 开发而成,不依赖快递100授权,如有侵权行为,请留言,我会尽快删除。
1、如何不依赖api授权,我参考以下网站:
2、接下来上代码:kuaidiUtils
/**
* 快递查询工具类
* 这里只收集了几个常用的快递公司,如有需要,可自行丰富 、网络请求用的Apache 的httpclient 4.+ 需要的可在google搜索,一大堆免费的
* @author Administrator
*
*/
public class KuaiDiUtil {
private static final String HUITONGKUAIDI = "百世汇通";
private static final String EMS = "EMS";
private static final String huitongkuaidi = "汇通快运";
private static final String QUANFENGKUAIDI = "全峰快递";
private static final String SHENTONG = "申通快递";
private static final String SHUNFENG = "顺丰快递";
private static final String TIANTIAN = "天天快递";
private static final String YUANTONG = "圆通速递";
private static final String YUNDA = "韵达快运";
private static final String ZHONGTONG = "中通速递";
private static final String KUAIJIESUDI = "快捷速递";
private static final String URL = "https://m.kuaidi100.com/query";
private static final String[] CODM = new String[]{
"HUITONGKUAIDI","EMS","huitongkuaidi","QUANFENGKUAIDI","SHENTONG","SHUNFENG","TIANTIAN","YUANTONG","YUNDA","ZHONGTONG","KUAIJIESUDI"};
private static final String[] COMC = new String[]{HUITONGKUAIDI,EMS,huitongkuaidi,QUANFENGKUAIDI,SHENTONG,SHUNFENG,TIANTIAN,YUANTONG,YUNDA,ZHONGTONG,KUAIJIESUDI};
public static void main(String[] args) {
System.out.println(getKDList().toString());
}
/**
* 根据快递公司名称获取快递公司编码
*/
public static String getCONumByCOName(String COName) {
switch (COName) {
case HUITONGKUAIDI:
return "HUITONGKUAIDI";
case EMS:
return "EMS";
case huitongkuaidi:
return "huitongkuaidi";
case QUANFENGKUAIDI:
return "QUANFENGKUAIDI";
case SHENTONG:
return "SHENTONG";
case SHUNFENG:
return "SHUNFENG";
case TIANTIAN:
return "TIANTIAN";
case YUANTONG:
return "YUANTONG";
case YUNDA:
return "YUNDA";
case ZHONGTONG:
return "ZHONGTONG";
case KUAIJIESUDI:
return "KUAIJIESUDI";
}
return "";
}
/**
* 根据快递公司编码获取快递公司名称
*/
public static String getCONameByCONum(String CONum) {
switch (CONum) {
case "HUITONGKUAIDI":
return HUITONGKUAIDI;
case "EMS":
return EMS;
case "huitongkuaidi":
return huitongkuaidi;
case "QUANFENGKUAIDI":
return QUANFENGKUAIDI;
case "SHENTONG":
return SHENTONG;
case "SHUNFENG":
return SHUNFENG;
case "TIANTIAN":
return TIANTIAN;
case "YUANTONG":
return YUANTONG;
case "YUNDA":
return YUNDA;
case "ZHONGTONG":
return ZHONGTONG;
case "KUAIJIESUDI":
return KUAIJIESUDI;
}
return "";
}
/**
* 获取快递公司编码和快递公司名称的map
*/
public static List<Map<String, String>> getKDList() {
List<Map<String, String>> kdList = new ArrayList<>();
Map<String, String> kdMap=null;
for(int i =0;i<CODM.length;i++){
kdMap = new LinkedHashMap<>();
kdMap.put("codm", CODM[i]);
kdMap.put("comc", COMC[i]);
kdList.add(kdMap);
}
return kdList;
}
/**
* 根据快递公司名称和物流单号查询物流信息
*/
public static KuaiDi getWlInfo(String _COName, String _WLDNum) {
if (Validate.isNull(_COName) || Validate.isNull(_WLDNum)){
throw new Error("[快递公司名称] 或 [快递单号]不能为空");
}else {
if(Validate.isNull(getCONumByCOName(_COName))){
throw new Error("[快递公司名称] 转 [快递公司代码] 时发生异常:根据[快递公司名称]找不到对应的[快递公司代码]");
}else{
String codm =getCONumByCOName(_COName);
String result = sendGet(codm, _WLDNum);
KuaiDi kd =