天天看點

JavaWeb實作快遞物流查詢

網上的物流查詢接口有很多,但是大部分都比較麻煩。是以這裡介紹一個比較簡單的查詢方法,不需要注冊,隻需要快遞單号和物流公司就可以的檢視物流資訊了。

接口連結

主要是利用 快遞100 的查詢網址:

http://www.kuaidi100.com/query?type=快遞公司英文&postid=單号

如果是在Python中可以直接調用

request

來發起請求,但是在java中,還是第一次調用請求,是以查了一些資料。

執行個體

以下部分代碼,參考自:工具類 | JAVA發送HTTP請求,并接受傳回内容

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @Name: HttpRequest.java
 * @Description: Java背景通路http,并獲得響應資料
 */
public final class RequestTest {

    // ;charset=utf-8 必須要,不然會出現亂碼
    public static String CONTENT_TYPE_FORM_URLENCODED = "application/x-www-form-urlencoded;charset=utf-8";

    public static String CONTENT_TYPE_FORM_DATA = "multipart/form-data;charset=utf-8";

    /** text/plain;charset=utf-8 */
    public static String CONTENT_TYPE_PLAIN = "text/plain;charset=utf-8";
    /** application/json;charset=utf-8 */
    public static String CONTENT_TYPE_JSON = "application/json;charset=utf-8";

   
    /**
     * @Name: get
     * @Description: 發送get請求,并傳回響應資料。
     * @Parameters: URL,要通路的url。
     * @Return: String,響應資料。
     */
    public static String get(String URL) {

        HttpURLConnection conn = null;
        BufferedReader dataIn = null;
        String msg = null;
        try {
            // 把字元串轉換為URL請求位址
            URL url = new URL(URL);
            // 打開連接配接
            conn = (HttpURLConnection) url.openConnection();
            // 連接配接會話
            conn.connect();
            // 擷取輸入流
            dataIn = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            StringBuilder sb = new StringBuilder();
            while ((line = dataIn.readLine()) != null) {// 循環讀取流
                sb.append(line);
            }
            return sb.toString();

        } catch (Exception e) {
        	msg = "{\"message\": \"網絡異常!\",\"ischeck\": \"0\"}";
        } finally {
            try {
                // 重要且易忽略步驟 (關閉流,切記!)
                if (dataIn != null) {
                    dataIn.close();
                }
                // 銷毀連接配接
                if (conn != null) {
                    conn.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return msg;
    }


    public static void main(String[] args) {
        String result = get("http://www.kuaidi100.com/query?type=debangwuliu&postid=9986459371");
        System.out.println(result);
    }
}

           

結果回調

請求之後傳回的結果:

{
    "message": "ok", 
    "nu": "9986459371", 
    "ischeck": "1", 
    "condition": "F00", 
    "com": "debangwuliu", 
    "status": "200", 
    "state": "3", 
    "data": [
        {
            "time": "2018-10-29 12:49:17", 
            "ftime": "2018-10-29 12:49:17", 
            "context": "正常簽收,簽收人類型:本人", 
            "location": null
        }, 
        {
            "time": "2018-10-29 12:41:52", 
            "ftime": "2018-10-29 12:41:52", 
            "context": "派送中,派送人:黃**,電話:***", 
            "location": null
        }
    ]
}
           

從上面傳回來的結果,可以看到,傳回的是類似json的字元串,這樣就可以将這些結果傳到前端進行展示了。

需要注意的是,如果查詢的資訊是錯誤的話,傳回的結果中的

ischeck

字段的值是0,并且會有提示資訊。

例如下面的結果:

{
    "message": "快遞公司參數異常:單号不存在或者已經過期", 
    "nu": "998645937", 
    "ischeck": "0", 
    "condition": "", 
    "com": "debangwuliu", 
    "status": "201", 
    "state": "0", 
    "data": [ ]
}
           

快遞公司對應資訊

在拼接連結中,發現有些快遞公司的英文不是簡單的拼音轉過去的。是以,爬取了快遞100首頁中的所有快遞公司的資訊,下面就是整理過後的對應資訊。

強烈建議在拼接URL之前,先對照一下下面的對應表。

物流公司英文 物流公司
annengwuliu 安能物流​
aae AAE​
aramex Aramex​
baishiwuliu 百世快運​
youzhengguonei 包裹/平郵​
bangsongwuliu 邦送物流​
coe COE​
flyway 程光快遞​
chuanxiwuliu 傳喜物流​
dhl DHL​
debangwuliu 德邦快遞​
disifang 遞四方​
emsguoji EMS國際件​
ewe EWE​
fedex FedEx​
chronopostfren 法國郵政​
youzhengguonei 挂号信​
guotongkuaidi 國通快遞​
koreapost 南韓郵政​
postnl 荷蘭郵政​
jiajiwuliu 佳吉快運​
jinguangsudikuaijian 京廣快遞​
jiayiwuliu 佳怡物流​
kuaijiesudi 快捷速遞​
kuayue 跨越速運​
hrvatska 克羅地亞郵政​
longbanwuliu 龍邦快運​
lianbangkuaidi 聯邦快遞​
lianhaowuliu 聯昊通​
usps 美國郵政​
minghangkuaidi 民航快遞​
mexico 墨西哥郵政​
ganzhongnengda 能達速遞​
postennorge 挪威郵政​
southafrican 南非郵政​
ocs OCS​
ontrac OnTrac​
portugalctt 葡萄牙郵政​
swisspost 瑞士郵政​
quanfengkuaidi 全峰快遞​
quanyikuaidi 全一快遞​
quanchenkuaidi 全晨快遞​
rrs 日日順物流​
rufengda 如風達​
japanposten 日本郵政​
suer 速爾快遞​
shenghuiwuliu 盛輝物流​
tnt TNT​
tiandihuayu 天地華宇​
thailand 泰國郵政​
usps USPS​
ups UPS​
wanxiangwuliu 萬象物流​
wanjiawuliu 萬家物流​
ukrpost 烏克蘭郵政​
xinbangwuliu 新邦物流​
xinfengwuliu 信豐物流​
hkpost 中國香港郵政​
youzhengguonei 郵政國内​
youzhengguoji 郵政國際​
youshuwuliu 優速快遞​
zhongyouwuliu 中郵物流​
ztky 中鐵物流​
zhongtiewuliu 中鐵快運​