JavaWeb中實現快遞單號api接口信息查詢

      網友投稿 722 2025-04-02

      網上的物流快遞查詢接口有很多,但是大部分都比較麻煩。所以這里介紹一個比較簡單的查詢方法,不需要對接友情鏈接,免費獲取API接口技術文檔以及demo

      主要是利用 快遞鳥的免費查詢API接口

      對接流程:

      快遞鳥網站申請接口KEY并認證-對接接口-調試-上線使用

      1、登錄快遞鳥官網注冊頁面注冊快遞鳥賬號

      2、登錄快遞鳥用戶管理后臺

      快遞公司編號,技術文檔對接都可以下載

      如果是在Python中可以直接調用request來發起請求,但是在java中,還是第一次調用請求,所以查了一些資料。

      實例

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

      JavaWeb中實現快遞單號api接口信息查詢

      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)?<>>?2]);? ????????????????sb.append(base64EncodeChars[((b1?&?0x03)?<>>?4)]);? ????????????????sb.append(base64EncodeChars[(b2?&?0x0f)?<>>?2]);? ????????????sb.append(base64EncodeChars[((b1?&?0x03)?<>>?4)]);? ????????????sb.append(base64EncodeChars[((b2?&?0x0f)?<>>?6)]);? ????????????sb.append(base64EncodeChars[b3?&?0x3f]);? ????????}? ????????return?sb.toString();? ????} }

      數據快遞服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何使用手機wps表格設置自動換行(手機wps表格內怎么換行)
      下一篇:excel批量建立副本的方法(excel怎么建立多個副本)
      相關文章
      亚洲精品无码专区在线| 亚洲制服在线观看| 亚洲免费网站观看视频| 亚洲国产成人无码av在线播放| 亚洲国产综合精品中文第一区| 亚洲熟妇av一区二区三区| 在线亚洲午夜理论AV大片| 浮力影院亚洲国产第一页| 久久久精品国产亚洲成人满18免费网站 | 亚洲国产成人精品无码区在线观看| 亚洲综合另类小说色区色噜噜| 亚洲av中文无码| 亚洲成AⅤ人影院在线观看| 亚洲AV无码专区日韩| 亚洲第一页日韩专区| 精品国产日韩亚洲一区| 亚洲中文字幕久久精品无码APP| 亚洲精品乱码久久久久久蜜桃不卡| 亚洲精品成人无码中文毛片不卡| 亚洲AV无码成人专区片在线观看| 亚洲国产日韩一区高清在线| 麻豆亚洲av熟女国产一区二| 亚洲毛片在线免费观看| 亚洲一区二区三区免费视频| 亚洲色欲色欱wwW在线| 日本亚洲欧美色视频在线播放| 亚洲高清偷拍一区二区三区| 久久久久亚洲AV成人网人人网站 | 色婷五月综激情亚洲综合| 亚洲一区二区三区写真 | 久久亚洲精品成人AV| 亚洲国产精品美女| 国产午夜亚洲精品国产| 亚洲AV无码一区二区三区鸳鸯影院| 国产亚洲精品美女久久久久久下载| 亚洲精品第一国产综合精品99| 中文字幕中韩乱码亚洲大片| 久久亚洲精品成人777大小说| 亚洲欧洲高清有无| 亚洲国产成人精品无码区二本| 亚洲国产成人精品女人久久久 |