1. 程式人生 > >JavaWeb實現快遞物流查詢

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 中鐵快運​