快遞查詢-快遞鳥

直接復制全文到springboot中的ApplicationTests窿春,修改TODO的地方

import org.junit.jupiter.api.Test;

import org.springframework.boot.test.context.SpringBootTest;

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.util.HashMap;

import java.util.Map;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import java.security.MessageDigest;

@SpringBootTest

class MangheApplicationTests {

//用戶ID羔味,快遞鳥提供,注意保管,不要泄漏

? ? private String EBusinessID="";// TODO 即用戶ID棍丐,登錄快遞鳥官網(wǎng)會員中心獲取https://www.kdniao.com/UserCenter/v4/UserHome.aspx

? ? //API key渠牲,快遞鳥提供,注意保管,不要泄漏

? ? private String ApiKey="";// TODO 即API key脆淹,登錄快遞鳥官網(wǎng)會員中心獲取https://www.kdniao.com/UserCenter/v4/UserHome.aspx

? ? //請求url, 正式環(huán)境地址

? ? private String ReqURL="https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";

@Test

? ? public void checkPack(){

try {

System.out.println(orderOnlineByJson());

}catch (Exception e) {

e.printStackTrace();

}

}

//即時查詢接口

? ? public String orderOnlineByJson()throws Exception{

// 組裝應用級參數(shù) TODO ShipperCode:快遞簡稱 LogisticCode:快遞單號

? ? ? ? String RequestData="{"+

"'CustomerName': '',"+

"'OrderCode': '',"+

"'ShipperCode': 'YTO',"+

"'LogisticCode': 'YT745452704',"+

"}";

// 組裝系統(tǒng)級參數(shù)

? ? ? ? Mapparams =new HashMap();

params.put("RequestData", urlEncoder(RequestData,"UTF-8"));

params.put("EBusinessID",EBusinessID);

params.put("RequestType","1002");//免費即時查詢接口指令1002/在途監(jiān)控即時查詢接口指令8001/地圖版即時查詢接口指令8003

? ? ? ? String dataSign=encrypt(RequestData,ApiKey,"UTF-8");

params.put("DataSign", urlEncoder(dataSign,"UTF-8"));

params.put("DataType","2");

// 以form表單形式提交post請求常空,post請求體中包含了應用級參數(shù)和系統(tǒng)級參數(shù)

? ? ? ? String result=sendPost(ReqURL,params);

//根據(jù)公司業(yè)務處理返回的信息......

? ? ? ? return result;

}

/**

? ? * MD5加密

? ? * str 內(nèi)容

? ? * 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

int val =result[i] &0xff;

if (val <=0xf) {

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

return sb.toString().toLowerCase();

}

/**

? ? * base64編碼

? ? * str 內(nèi)容

? ? * charset 編碼方式

? ? * @throws UnsupportedEncodingException

? ? */

? ? private String base64(String str,String charset)throws UnsupportedEncodingException{

String encoded =Base64.encode(str.getBytes(charset));

return encoded;

}

@SuppressWarnings("unused")

private String urlEncoder(String str,String charset)throws UnsupportedEncodingException{

String result =URLEncoder.encode(str, charset);

return result;

}

/**

? ? * 電商Sign簽名生成

? ? * content 內(nèi)容

? ? * keyValue ApiKey

? ? * charset 編碼方式

? ? * @throws UnsupportedEncodingException ,Exception

? ? * @return DataSign簽名

? ? */

? ? @SuppressWarnings("unused")

private? String encrypt (String content,String keyValue,String charset)throws UnsupportedEncodingException,Exception

? ? {

if (keyValue !=null)

{

return base64(MD5(content + keyValue, charset), charset);

}

return base64(MD5(content, charset), charset);

}

/**

? ? * 向指定 URL 發(fā)送POST方法的請求

? ? * url 發(fā)送請求的 URL

? ? * params 請求的參數(shù)集合

? ? * @return 遠程資源的響應結(jié)果

? ? */

? ? @SuppressWarnings("unused")

private? String sendPost(String url,Map params) {

OutputStreamWriter out =null;

BufferedReader in =null;

StringBuilder result =new? ? StringBuilder();

try {

URL realUrl =new URL(url);

HttpURLConnection conn =(HttpURLConnection)realUrl.openConnection();

// 發(fā)送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");

// 發(fā)送請求參數(shù)

? ? ? ? ? ? if (params !=null) {

StringBuilder param =new? ? StringBuilder();

for (Map.Entryentry : 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塊來關(guān)閉輸出流、輸入流

? ? ? ? finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result.toString();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盖溺,一起剝皮案震驚了整個濱河市漓糙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烘嘱,老刑警劉巖昆禽,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蝇庭,居然都是意外死亡醉鳖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門遗契,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辐棒,“玉大人,你說我怎么就攤上這事牍蜂⊙” “怎么了鲫竞?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵辐怕,是天一觀的道長。 經(jīng)常有香客問我从绘,道長寄疏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任僵井,我火速辦了婚禮陕截,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘批什。我一直安慰自己农曲,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布驻债。 她就那樣靜靜地躺著乳规,像睡著了一般。 火紅的嫁衣襯著肌膚如雪合呐。 梳的紋絲不亂的頭發(fā)上暮的,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音淌实,去河邊找鬼冻辩。 笑死猖腕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的微猖。 我是一名探鬼主播谈息,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凛剥!你這毒婦竟也來了侠仇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤犁珠,失蹤者是張志新(化名)和其女友劉穎逻炊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犁享,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡余素,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炊昆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桨吊。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凤巨,靈堂內(nèi)的尸體忽然破棺而出视乐,到底是詐尸還是另有隱情,我是刑警寧澤敢茁,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布佑淀,位于F島的核電站,受9級特大地震影響彰檬,放射性物質(zhì)發(fā)生泄漏伸刃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一逢倍、第九天 我趴在偏房一處隱蔽的房頂上張望捧颅。 院中可真熱鬧,春花似錦较雕、人聲如沸隘道。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至忘晤,卻和暖如春宛蚓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背设塔。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工凄吏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓痕钢,卻偏偏與公主長得像图柏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子任连,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容