網上的物流快遞查詢接口有很多,但是大部分都比較麻煩。所以這里介紹一個比較簡單的查詢方法,不需要對接友情鏈接,免費獲取API接口技術文檔以及demo
主要是利用 快遞鳥的免費查詢API接口:
對接流程:
快遞鳥網站申請接口KEY并認證-對接接口-調試-上線使用
1、登錄快遞鳥官網注冊頁面注冊快遞鳥賬號
2、登錄快遞鳥用戶管理后臺
快遞公司編號,技術文檔對接都可以下載
如果是在Python中可以直接調用request來發起請求,但是在java中,還是第一次調用請求,所以查了一些資料。
實例
以下部分代碼,參考自:工具類 | JAVA發送HTTP請求,并接受返回內容

import?java.io.BufferedReader; import?java.io.IOException; import?java.io.InputStreamReader; import?java.io.OutputStreamWriter; import?java.io.UnsupportedEncodingException; import?java.net.HttpURLConnection; import?java.net.URL; import?java.net.URLEncoder; import?java.security.MessageDigest; import?java.util.HashMap; import?java.util.Map;? /** ?* ?*?單日超過500單查詢量,建議接入物流軌跡訂閱推送接口 ?*? ?*/ public?class?KdniaoTrackQueryAPI?{ ???? ????//DEMO ????public?static?void?main(String[]?args)?{ ????????KdniaoTrackQueryAPI?api?=?new?KdniaoTrackQueryAPI(); ????????try?{ ????????????String?result?=?api.getOrderTracesByJson("ANE",?"210001633605"); ????????????System.out.print(result); ???????????? ????????}?catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????} ????} ???? ????//電商ID ????private?String?EBusinessID="申請"; ????//電商加密私鑰,注意保管,不要泄漏 ????private?String?AppKey="申請"; ????//請求url ????private?String?ReqURL="http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";???? ? ????/** ?????*?Json方式?查詢訂單物流軌跡 ?????*?@throws?Exception? ?????*/ ????public?String?getOrderTracesByJson(String?expCode,?String?expNo)?throws?Exception{ ????????String?requestData=?"{'OrderCode':'','ShipperCode':'"?+?expCode?+?"','LogisticCode':'"?+?expNo?+?"'}"; ???????? ????????Map?params?=?new?HashMap(); ????????params.put("RequestData",?urlEncoder(requestData,?"UTF-8")); ????????params.put("EBusinessID",?EBusinessID); ????????params.put("RequestType",?"1002"); ????????String?dataSign=encrypt(requestData,?AppKey,?"UTF-8"); ????????params.put("DataSign",?urlEncoder(dataSign,?"UTF-8")); ????????params.put("DataType",?"2"); ???????? ????????String?result=sendPost(ReqURL,?params);???? ???????? ????????//根據公司業務處理返回的信息...... ???????? ????????return?result; ????} ? ????/** ?????*?MD5加密 ?????*?@param?str?內容??????? ?????*?@param?charset?編碼方式 ?????*?@throws?Exception? ?????*/ ????@SuppressWarnings("unused") ????private?String?MD5(String?str,?String?charset)?throws?Exception?{ ????????MessageDigest?md?=?MessageDigest.getInstance("MD5"); ????????md.update(str.getBytes(charset)); ????????byte[]?result?=?md.digest(); ????????StringBuffer?sb?=?new?StringBuffer(32); ????????for?(int?i?=?0;?i??params)?{ ????????OutputStreamWriter?out?=?null; ????????BufferedReader?in?=?null;???????? ????????StringBuilder?result?=?new?StringBuilder();? ????????try?{ ????????????URL?realUrl?=?new?URL(url); ????????????HttpURLConnection?conn?=(HttpURLConnection)?realUrl.openConnection(); ????????????//?發送POST請求必須設置如下兩行 ????????????conn.setDoOutput(true); ????????????conn.setDoInput(true); ????????????//?POST方法 ????????????conn.setRequestMethod("POST"); ????????????//?設置通用的請求屬性 ????????????conn.setRequestProperty("accept",?"*/*"); ????????????conn.setRequestProperty("connection",?"Keep-Alive"); ????????????conn.setRequestProperty("user-agent", ????????????????????"Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.1;SV1)"); ????????????conn.setRequestProperty("Content-Type",?"application/x-www-form-urlencoded"); ????????????conn.connect(); ????????????//?獲取URLConnection對象對應的輸出流 ????????????out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8"); ????????????//?發送請求參數???????????? ????????????if?(params?!=?null)?{ ??????????????????StringBuilder?param?=?new?StringBuilder();? ??????????????????for?(Map.Entry?entry?:?params.entrySet())?{ ??????????????????????if(param.length()>0){ ??????????????????????????param.append("&"); ??????????????????????}?????????????????? ??????????????????????param.append(entry.getKey()); ??????????????????????param.append("="); ??????????????????????param.append(entry.getValue());?????????????????????? ??????????????????????//System.out.println(entry.getKey()+":"+entry.getValue()); ??????????????????} ??????????????????//System.out.println("param:"+param.toString()); ??????????????????out.write(param.toString()); ????????????} ????????????//?flush輸出流的緩沖 ????????????out.flush(); ????????????//?定義BufferedReader輸入流來讀取URL的響應 ????????????in?=?new?BufferedReader( ????????????????????new?InputStreamReader(conn.getInputStream(),?"UTF-8")); ????????????String?line; ????????????while?((line?=?in.readLine())?!=?null)?{ ????????????????result.append(line); ????????????} ????????}?catch?(Exception?e)?{???????????? ????????????e.printStackTrace(); ????????} ????????//使用finally塊來關閉輸出流、輸入流 ????????finally{ ????????????try{ ????????????????if(out!=null){ ????????????????????out.close(); ????????????????} ????????????????if(in!=null){ ????????????????????in.close(); ????????????????} ????????????} ????????????catch(IOException?ex){ ????????????????ex.printStackTrace(); ????????????} ????????} ????????return?result.toString(); ????} ???? ???? ????private?static?char[]?base64EncodeChars?=?new?char[]?{? ????????'A',?'B',?'C',?'D',?'E',?'F',?'G',?'H',? ????????'I',?'J',?'K',?'L',?'M',?'N',?'O',?'P',? ????????'Q',?'R',?'S',?'T',?'U',?'V',?'W',?'X',? ????????'Y',?'Z',?'a',?'b',?'c',?'d',?'e',?'f',? ????????'g',?'h',?'i',?'j',?'k',?'l',?'m',?'n',? ????????'o',?'p',?'q',?'r',?'s',?'t',?'u',?'v',? ????????'w',?'x',?'y',?'z',?'0',?'1',?'2',?'3',? ????????'4',?'5',?'6',?'7',?'8',?'9',?'+',?'/'?};? ???? ????public?static?String?base64Encode(byte[]?data)?{? ????????StringBuffer?sb?=?new?StringBuffer();? ????????int?len?=?data.length;? ????????int?i?=?0;? ????????int?b1,?b2,?b3;? ????????while?(i?>>?2]);? ????????????????sb.append(base64EncodeChars[(b1?&?0x3)?<4]);? ????????????????sb.append("==");? ????????????????break;? ????????????}? ????????????b2?=?data[i++]?&?0xff;? ????????????if?(i?==?len)? ????????????{? ????????????????sb.append(base64EncodeChars[b1?>>>?2]);? ????????????????sb.append(base64EncodeChars[((b1?&?0x03)?<4)?|?((b2?&?0xf0)?>>>?4)]);? ????????????????sb.append(base64EncodeChars[(b2?&?0x0f)?<2]);? ????????????????sb.append("=");? ????????????????break;? ????????????}? ????????????b3?=?data[i++]?&?0xff;? ????????????sb.append(base64EncodeChars[b1?>>>?2]);? ????????????sb.append(base64EncodeChars[((b1?&?0x03)?<4)?|?((b2?&?0xf0)?>>>?4)]);? ????????????sb.append(base64EncodeChars[((b2?&?0x0f)?<2)?|?((b3?&?0xc0)?>>>?6)]);? ????????????sb.append(base64EncodeChars[b3?&?0x3f]);? ????????}? ????????return?sb.toString();? ????} }
數據快遞服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。