package com.iamberry.rst.utils;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* Created by Administrator on 2017/8/15.
*/
@Component
public class KuaiDi100 {
private static String key = "29833628d495d7a5";//授权密匙key 百度的
/*private static String key = "06d6c2ea1bdb4ee9";//授权密匙key 自己的*/
/*
*/
public String logisticsConversions(String code){
if(code == null || code.equals("")){
return null;
}
switch (code){
case "sto":
code = "shentong";
break;
case "yto":
code = "yuantong";
break;
case "sf":
code = "shunfeng";
break;
case "ems":
code = "ems";
break;
case "eyb":
code = "ems";
break;
case "zto":
code = "zhongtong";
break;
case "zjs":
code = "zhaijisong";
break;
case "yunda":
code = "yunda";
break;
case "cces":
code = "cces";
break;
case "pick":
code = "pick";
break;
case "htky":
code = "huitongkuaidi";
break;
case "ttkdex":
code = "tiantian";
break;
case "stars":
code = "xingchenjibian";
break;
case "jd":
code = "jd";
break;
case "01":
code = "01";
break;
case "02":
code = "01";
break;
}
return code;
}
/**
* 快递对应代码
* EMS ems/eyb
* 申通快递 shentong
* 顺丰速运 shunfeng
* 圆通速递 yuantong
* 韵达快运 yunda
* 中通快递 zhongtong
* 百世快递 huitongkuaidi
* 天天快递 tiantian
* 宅急送 zhaijisong
* 邮政国内包裹 youzhengguonei
* 邮政国际包裹 youzhengguoji
* EMS国际快递 emsguoji
*/
public static void main(String[] agrs){
KuaiDi100 kuaidi = new KuaiDi100();
System.out.println(kuaidi.getExpressInfo("ems","9754210807242"));
}
/**
* 查询快递信息
* @param com 快递公司代码
* @param nu 快递单号
* @return
*/
public JSONObject getExpressInfo(String com , String nu){
JSONObject ret = null;
try
{
com = logisticsConversions(com);
StringBuilder sb = new StringBuilder();
sb.append("http://api.kuaidi100.com/api?id=");
sb.append(KuaiDi100.key);
sb.append("&com=").append(com);
sb.append("&nu=").append(nu);
sb.append("&show=0&muti=1&order=desc");
URL url= new URL(sb.toString());
URLConnection con=url.openConnection();
con.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
String type = con.guessContentTypeFromStream(urlStream);
String charSet=null;
if (type == null)
type = con.getContentType();
if (type == null || type.trim().length() == 0)
return null;
if(type.indexOf("charset=") > 0)
charSet = type.substring(type.indexOf("charset=") + 8);
byte b[] = new byte[10000];
int numRead = urlStream.read(b);
String content = new String(b, 0, numRead, "UTF-8");
while (numRead != -1) {
numRead = urlStream.read(b);
if (numRead != -1) {
//String newContent = new String(b, 0, numRead);
String newContent = new String(b, 0, numRead, "UTF-8");
content += newContent;
}
}
ret = JSONObject.fromObject(content);
System.out.println(ret);
urlStream.close();
} catch (MalformedURLException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return ret;
}
/**
* 该接口使用与收费的快递公司接口查询
* @param com 快递公司代码
* @param nu 快递单号
* @return
*/
public static String searchkuaiDiInfo(String com, String nu)
{
String content = "";
try
{
StringBuilder sb = new StringBuilder();
sb.append("http://www.kuaidi100.com/applyurl?key=").append(KuaiDi100.key);
sb.append("&com=").append(com);
sb.append("&nu=").append(nu);
URL url = new URL(sb.toString());
URLConnection con = url.openConnection();
con.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
byte b[] = new byte[10000];
int numRead = urlStream.read(b);
content = new String(b, 0, numRead);
while (numRead != -1)
{
numRead = urlStream.read(b);
if (numRead != -1)
{
// String newContent = new String(b, 0, numRead);
String newContent = new String(b, 0, numRead, "UTF-8");
content += newContent;
}
}
urlStream.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("快递查询错误");
}
return content;
}
/**物流名称替换**/
public static String replace(String code) {
String name = "";
switch (code){
case "sto":
name= "申通快递";
break;
case "yto":
name= "圆通快递";
break;
case "zto":
name= "中通速递";
break;
case "sf":
name= "顺丰快递";
break;
case "ems":
name= "邮政EMS";
break;
case "eyb":
name= "E邮宝";
break;
case "zjs":
name= "宅急送";
break;
case "yunda":
name= "韵达快递";
break;
case "cces":
name= "cces快递";
break;
case "pick":
name= "上门提货";
break;
case "htky":
name= "汇通快递";
break;
case "ttkdex":
name= "天天快递";
break;
case "stars":
name= "星晨急便";
break;
case "jd":
name= "京东快递";
break;
case "01":
name= "其他";
break;
case "02":
name= "上门送货";
break;
case "longbanwuliu":
name= "龙邦快递";
break;
default:
break;
}
return name;
}
}