免费物流查询API调用案例参考.docx
《免费物流查询API调用案例参考.docx》由会员分享,可在线阅读,更多相关《免费物流查询API调用案例参考.docx(18页珍藏版)》请在冰豆网上搜索。
免费物流查询API调用案例参考
免费物流查询API调用案例参考
这是来自快递鸟的一个快递查询的api接口,支持快递单号查询,接口不错,分享三个案例给大家。
接口申请地址:
JAVA代码
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.UnsupportedEncodingException;
import.HttpURLConnection;
import.URL;
import.URLEncoder;
importjava.security.MessageDigest;
importjava.util.HashMap;
importjava.util.Map;
publicclassKdniaoTrackQueryAPI{
//DEMO
publicstaticvoidmain(String[]args){
KdniaoTrackQueryAPIapi=newKdniaoTrackQueryAPI();
try{
Stringresult=api.getOrderTracesByJson("ANE","210001633605");
System.out.print(result);
}catch(Exceptione){
e.printStackTrace();
}
}
//电商ID
privateStringEBusinessID="请申请";
privateStringAppKey="请申请";
//请求url
privateStringReqURL="http:
//api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
/**
*Json方式查询订单物流轨迹
*@throwsException
*/
publicStringgetOrderTracesByJson(StringexpCode,StringexpNo)throwsException{
StringrequestData="{'OrderCode':
'','ShipperCode':
'"+expCode+
"','LogisticCode':
'"+expNo+"'}";
Mapparams=newHashMap();
params.put("RequestData",urlEncoder(requestData,"UTF-8"));
params.put("EBusinessID",EBusinessID);
params.put("RequestType","1002");
StringdataSign=encrypt(requestData,AppKey,"UTF-8");
params.put("DataSign",urlEncoder(dataSign,"UTF-8"));
params.put("DataType","2");
Stringresult=sendPost(ReqURL,params);
//根据公司业务处理返回的信息......
returnresult;
}
/**
*XML方式查询订单物流轨迹
*@throwsException
*/
publicStringgetOrderTracesByXml()throwsException{
StringrequestData="
xmlversion=\"1.0\"encoding=\"utf-8\"?
>"+
""+
""+
"SF"+
"589707398027"+
"";
Mapparams=newHashMap();
params.put("RequestData",urlEncoder(requestData,"UTF-8"));
params.put("EBusinessID",EBusinessID);
params.put("RequestType","1002");
StringdataSign=encrypt(requestData,AppKey,"UTF-8");
params.put("DataSign",urlEncoder(dataSign,"UTF-8"));
params.put("DataType","1");
Stringresult=sendPost(ReqURL,params);
//根据公司业务处理返回的信息......
returnresult;
}
/**
*MD5加密
*@paramstr内容
*@paramcharset编码方式
*@throwsException
*/
@SuppressWarnings("unused")
privateStringMD5(Stringstr,Stringcharset)throwsException{
MessageDigestmd=MessageDigest.getInstance("MD5");
md.update(str.getBytes(charset));
byte[]result=md.digest();
StringBuffersb=newStringBuffer(32);
for(inti=0;iintval=result[i]&0xff;
if(val<=0xf){
sb.append("0");
}
sb.append(Integer.toHexString(val));
}
returnsb.toString().toLowerCase();
}
/**
*base64编码
*@paramstr内容
*@paramcharset编码方式
*@throwsUnsupportedEncodingException
*/
privateStringbase64(Stringstr,Stringcharset)throwsUnsupportedEncodingException{
Stringencoded=base64Encode(str.getBytes(charset));
returnencoded;
}
@SuppressWarnings("unused")
privateStringurlEncoder(Stringstr,Stringcharset)throwsUnsupportedEncodingException{
Stringresult=URLEncoder.encode(str,charset);
returnresult;
}
/**
*电商Sign签名生成
*@paramcontent内容
*@paramkeyValueAppkey
*@paramcharset编码方式
*@throwsUnsupportedEncodingException,Exception
*@returnDataSign签名
*/
@SuppressWarnings("unused")
privateStringencrypt(Stringcontent,StringkeyValue,Stringcharset)throws
UnsupportedEncodingException,Exception
{
if(keyValue!
=null)
{
returnbase64(MD5(content+keyValue,charset),charset);
}
returnbase64(MD5(content,charset),charset);
}
/**
*向指定URL发送POST方法的请求
*@paramurl发送请求的URL
*@paramparams请求的参数集合
*@return远程资源的响应结果
*/
@SuppressWarnings("unused")
privateStringsendPost(Stringurl,Mapparams){
OutputStreamWriterout=null;
BufferedReaderin=null;
StringBuilderresult=newStringBuilder();
try{
URLrealUrl=newURL(url);
HttpURLConnectionconn=(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;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.connect();
//获取URLConnection对象对应的输出流
out=newOutputStreamWriter(conn.getOutputStream(),"UTF-8");
//发送请求参数
if(params!
=null){
StringBuilderparam=newStringBuilder();
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=newBufferedReader(
newInputStreamReader(conn.getInputStream(),"UTF-8"));
Stringline;
while((line=in.readLine())!
=null){
result.append(line);
}
}catch(Exceptione){
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!
=null){
out.close();
}
if(in!
=null){
in.close();
}
}
catch(IOExceptionex){
ex.printStackTrace();
}
}
returnresult.toString();
}
privatestaticchar[]base64EncodeChars=newchar[]{
'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','+','/'};
publicstaticStringbase64Encode(byte[]data){
StringBuffersb=newStringBuffer();
intlen=data.length;
inti=0;
intb1,b2,b3;
while(ib1=data[i++]&0xff;
if(i==len)
{
sb.append(base64EncodeChars[b1>>>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]);
}
returnsb.toString();
}
}
PHP代码
php
//电商ID
defined('EBusinessID')ordefine('EBusinessID',1237100);
//电商加密私钥,注意保管,不要泄漏
defined('AppKey')ordefine('AppKey','518a73d8-1f7f-441a-b644-33e77b49d846');
//请求url
defined('ReqURL')ordefine('ReqURL','http:
//api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx');
/**
*Json方式查询订单物流轨迹
*/
functiongetOrderTracesByJson(){
$requestData="{'OrderCode':
'','ShipperCode':
'SF','LogisticCode':
'589707398027'}";
$datas=array(
'EBusinessID'=>EBusinessID,
'RequestType'=>'1002',
'RequestData'=>urlencode($requestData),
'DataType'=>'2',
);
$datas['DataSign']=encrypt($requestData,AppKey);
$result=sendPost(ReqURL,$datas);
//根据公司业务处理返回的信息......
return$result;
}
/**
*XML方式查询订单物流轨迹
*/
functiongetOrderTracesByXml(){
$requestData="
xmlversion=\"1.0\"encoding=\"utf-8\"?
>".
"".
"".
"SF".
"589707398027".
"";
$datas=array(
'EBusinessID'=>EBusinessID,
'RequestType'=>'1002',
'RequestData'=>urlencode($requestData),
'DataType'=>'1',
);
$datas['DataSign']=encrypt($requestData,AppKey);
$result=sendPost(ReqURL,$datas);
//根据公司业务处理返回的信息......
return$result;
}
/**
*post提交数据
*@paramstring$url请求Url
*@paramarray$datas提交的数据
*@returnurl响应返回的html
*/
functionsendPost($url,$datas){
$temps=array();
foreach($datasas$key=>$value){
$temps[]=sprintf('%s=%s',$key,$value);
}
$post_data=implode('&',$temps);
$url_info=parse_url($url);
if($url_info['port']=='')
{
$url_info['port']=80;
}
echo$url_info['port'];
$httpheader="POST".$url_info['path']."HTTP/1.0\r\n";
$httpheader.="Host:
".$url_info['host']."\r\n";
$httpheader.="Content-Type:
application/x-www-form-urlencoded\r\n";
$httpheader.="Content-Length:
".strlen($post_data)."\r\n";
$httpheader.="Connection:
close\r\n\r\n";
$httpheader.=$post_data;
$fd=fsockopen($url_info['host'],$url_info['port']);
fwrite($fd,$httpheader);
$gets="";
$headerFlag=true;
while(!
feof($fd)){
if(($header=@fgets($fd))&&($header=="\r\n"||$header=="\n")){
break;
}
}
while(!
feof($fd)){
$gets.=fread($fd,128);
}
fclose($fd);
return$gets;
}
/**
*电商Sign签名生成
*@paramdata内容
*@paramappkeyAppkey
*@returnDataSign签名
*/
functionencrypt($data,$appkey){
returnurlencode(base64_encode(md5($data.$appkey)));
}
?
>
.NET代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web;
usingSystem.Net;
usingSystem.IO;
namespaceK