無制限の急行物流軌道クエリインターフェイス無料ドッキング、原理は注文内容が物流データへの更新、リアルタイムのアクセスを追跡する場合、インターフェイスにリアルタイム監視のためのインタフェースの受注を購読、データをフォーマットし、到着の運送状予定時刻を計算しています物流状況の後に、現在の位置データとプロセス全体の他の都市では、プッシュバック。受注後の監視の終わりまで。電気・プロバイダーといくつかのシステムソフトウェアに適して。
•シナリオ
①バイヤーの物流クエリ:追跡、小包の進捗状況、予想配達時間、配達人の連絡先情報。
②売り手の物流追跡:スーパーエリアかどうかは、拒否された作品、納期を回します
③プラットフォームの監視と管理:偽の取引を監視、売り手は領収書の時間を確認するために、顧客に合わせた出荷します。
javademo例:
輸入java.io.BufferedReader; インポートにjava.io.IOException; 輸入java.io.InputStreamReader。 輸入java.io.OutputStreamWriterが、 輸入java.io.UnsupportedEncodingException。 インポートのjava.net.HttpURLConnection; インポートのjava.net.URL; 輸入java.net.URLEncoder。 輸入java.util.HashMapを; 輸入java.util.Map; 輸入com.sun.org.apache.xerces.internal.impl.dv.util.Base64。 輸入java.security.MessageDigestの; パブリック クラスKdGoldAPIDemo { // 电商ID プライベートEBusinessID =文字列「1237100」; // 電気・プロバイダー秘密鍵暗号、宅配便の鳥を提供し、世話をする、(再アプリケーションのIDであることを)漏れない プライベート文字列のAppKey =「518a73d8-1f7f-441A-b644-33e77b49d846」; // リクエストURL プライベート文字列reqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx" ; / ** * JSON実施形態加入情報ストリーム * @throws 例外 * / パブリック文字列orderTracesSubByJson()がスロー例外{ 文字列requestData =「{ 'コード': 'SF'、 'アイテム':[ "+ " { 'いいえ': '909 261 024 507'、 'のBk': 'テスト'}、 "+ "{ 'いいえ' '589554393102'、 'のBk': 'テスト'}、" + "{ 'いいえ' '589522101958'、 'のBk': 'テスト'}、" + 「{ 'いいえ'「909198822942 」、 'のBk': 'テスト'} "+ "]}" 。 地図 <文字列、文字列>のparams = 新しい HashMapの<文字列、文字列> (); params.put( "RequestData"のURLEncoder(requestData、 "UTF-8" )); params.put( "EBusinessID" 、EBusinessID)。 params.put( "RequestType"、 "1005" ); ストリングdataSign =暗号化(requestData、のAppKey、 "UTF-8" )。 params.put( "DataSign"のURLEncoder(dataSign、 "UTF-8" )); params.put( "データ型"、 "2" ); 文字列の結果 = sendPost(reqURL、のparams); // 情報処理事業......返される リターン結果; } / ** * XMLストリームモード情報購読 * @throws 例外 * / パブリック文字列orderTracesSubByXml()がスロー例外を{ 文字列requestData = "<?xmlのバージョン= \" 1.0 \ "エンコーディング= \" UTF-8 \ "?>" + "<コンテンツ>" + 「<コード> SF </コード> "++ "<いいえ> 909261024507 </いいえ>" ++ "<商品>" + "<商品>" + "<Bkの>テスト</ Bkの>" + "</商品>" + "の<item>" + "<なし> 909261024507 </いいえ>" + 「<Bkの>テスト</ Bkの> 「+ "</商品>" + "</商品>" + "</コンテンツ>" ; 地図 <文字列、文字列>のparams = 新しい HashMapの<文字列、文字列> (); params.put( "RequestData"、URLEncoder(requestData、 "UTF-8" )); params.put( "EBusinessID" 、EBusinessID)。 params.put( "RequestType"、 "1005" の文字列dataSign =暗号化(requestData、のAppKey、 "UTF-8" ); params.put( "DataSign"のURLEncoder(dataSign、 "UTF-8" )); params.put ( "データ型"、 "1" )、 文字列結果 = sendPost(ReqURL、paramsは); // 根据公司业务处理返回的信息...... 戻り結果。 } / ** * MD5暗号化 * @paramのSTRコンテンツ * @param 文字セット符号化 * @throws 例外 * / (@SuppressWarningsを"未使用" ) プライベートストリングMD5(文字列str、文字列の文字セット)がスロー{例外 するMessageDigest MD = MessageDigest.getInstance( "MD5" )。 md.update(str.getBytes(文字セット))。 バイト []結果= md.digest()。 StringBufferのSB = 新しい StringBufferの(32 )。 以下のために(int型 i = 0; iはresult.length <; iは++ ){ int型のval = [I]&0xffのをもたらします。 もし(ヴァル<= 0xFの){ sb.append( "0" )。 } sb.append(Integer.toHexString(ヴァル))。 } を返す。sb.toString()toLowerCaseメソッドを()。 } / ** * BASE64编码 * @param STR内容 * @param 文字セット编码方式 * @throws にUnsupportedEncodingException * / プライベート文字列のBASE64(文字列strは、文字列の文字セット)がスローにUnsupportedEncodingException { エンコードされた文字列を = Base64.encode(str.getBytes(文字セット) ); 返すエンコードされました。 } @SuppressWarnings( "未使用" ) プライベートは、文字列のURLEncoder(文字列str、文字列の文字セット)スローにUnsupportedEncodingException { 文字列結果 = URLEncoder.encode(STR、文字セットを)。 戻り値の結果; } / ** *电商ログイン签名生成 * @paramのコンテンツ内容 * @param keyValueのAPPKEY * @param 文字セット编码方式 * @throws にUnsupportedEncodingException、例外 * @return DataSign签名 * / @SuppressWarnings( "未使用" ) プライベート文字列の暗号化(文字列の内容は、文字列keyValueの、文字列の文字セット)がスローされますUnsupportedEncodingException、例外 { IF(keyValueの=!ヌル) { 返すのBase64(MD5(コンテンツ+ keyValueの、文字セット)、文字セットを); } を返すのBase64(MD5(コンテンツ、文字セット)、文字セットを); } / ** *は、指定されたURLを送信POSTメソッドリクエスト * @param URL送信要求URL * @param セットのparamsリクエストパラメータ * @returnの応答結果、リモートリソース * / @SuppressWarnings( "未使用" ) プライベート文字列sendPost(文字列URL、地図<文字列、文字列>params){ OutputStreamWriterアウト = nullを。 中BufferedReaderの = nullを。 StringBuilderの結果 = 新しいStringBuilderの(); 試す{ URL RealURLは = 新しいURL(URL)を、 HttpURLConnectionのCONN = (HttpURLConnectionの)realUrl.openConnection(); // 发送POST请求必须设置如下两行 conn.setDoOutput(真の); conn.setDoInput(真の); // POST方法 conn.setRequestMethod( "POST"); // 设置通用的请求属性 conn.setRequestProperty( "* / *"、 "受け入れます" ); conn.setRequestProperty(「接続」、「キープアライブ」)。 conn.setRequestProperty( "ユーザーエージェント" 、 "Mozillaの/ 4.0(互換; MSIE 6.0; Windows NTの5.1; SV1)" ); conn.setRequestProperty( "のContent-Type"、 "アプリケーション/ x-www-form-urlencodedで" )。 conn.connect(); // 获取URLConnectionの对象对应的输出流 アウト= 新しいのOutputStreamWriter(conn.getOutputStream()、 "UTF-8" ); // もし(!のparams = ヌル){ StringBuilderのPARAM = 新しいStringBuilderの(); 用(のMap.Entry <文字列、文字列> エントリ:params.entrySet()){ 場合(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()); } // フラッシュバッファリングされた出力ストリーム out.flush(); // レスポンスのURL読み取るようにBufferedReaderの入力ストリームを定義 =で新しい新しいをBufferedReader( 新しい新しい InputStreamReaderの(conn.getInputStream()、 "UTF-8" )); 文字列のライン、 しばらく((=ラインで。 readLine())!= NULL ){ result.append(ライン); } } キャッチ(例外E){ e.printStackTrace(); } // 最終的に出力ストリームを閉じるためにブロックを使用し、入力ストリームの 最後に{ 試み{ IF(OUTが!= ヌル){ out.close(); } IF(IN =!ヌル) { in.close(); } } キャッチ(IOExceptionをEX){ ex.printStackTrace(); } } 戻りresult.toStringを(); } }