JavaWeb實現快遞物流查詢
阿新 • • 發佈:2018-12-23
網上的物流查詢介面有很多,但是大部分都比較麻煩。所以這裡介紹一個比較簡單的查詢方法,不需要註冊,只需要快遞單號和物流公司就可以的檢視物流資訊了。
介面連結
主要是利用 快遞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 | 中鐵快運 |