获取接口的使用权限
首先在阿里云市场找到地址:https://market.aliyun.com/products/57126001/cmapi023201.html
点击立即购买即可免费获得试用权限。
获取密钥的三种方式
查看密钥方式1:可以直接在购买完成后查看
查看密钥方式2:可以在地址页面右上角买家中心-控制台查看
查看密钥方式3:可以直接打开控制台地址,https://market.console.aliyun.com/
以上可以直接复制可用
接口调用
调用地址:http(s)://wdexpress.market.alicloudapi.com/gxali
请求方式:GET
返回类型:JSON
请求参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
n | STRING | 必选 | 快递单号 |
t | STRING | 可选 | 可不填,自动识别,这里调用中通快递使用t=zto |
示例代码
package com.aliyun.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;
public class Tools {
public static void main(String[] args) {
String host = "https://wdexpress.market.alicloudapi.com";
String path = "/gxali";
String appcode = "你自己的AppCode";
String t = "ZTO";
String n = "780098068058";
String urlSend = host + path + "?n=" + n + "&t="+ t;
try {
URL url = new URL(urlSend);
HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
httpURLCon.setRequestProperty("Authorization", "APPCODE " + appcode);
int httpCode = httpURLCon.getResponseCode();
if (httpCode == 200) {
String json = read(httpURLCon.getInputStream());
System.out.println("正常请求计费(其他均不计费)");
System.out.println("获取返回的json:");
System.out.print(json);
} else {
Map<String, List<String>> map = httpURLCon.getHeaderFields();
String error = map.get("X-Ca-Error-Message").get(0);
if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
System.out.println("AppCode错误 ");
} else if (httpCode == 400 && error.equals("Invalid Url")) {
System.out.println("请求的 Method、Path 或者环境错误");
} else if (httpCode == 400 && error.equals("Invalid Param Location")) {
System.out.println("参数错误");
} else if (httpCode == 403 && error.equals("Unauthorized")) {
System.out.println("服务未被授权(或URL和Path不正确)");
} else if (httpCode == 403 && error.equals("Quota Exhausted")) {
System.out.println("套餐包次数用完 ");
} else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
System.out.println("套餐包次数用完,请续购套餐");
} else {
System.out.println("参数名错误 或 其他错误");
System.out.println(error);
}
}
} catch (MalformedURLException e) {
System.out.println("URL格式错误");
} catch (UnknownHostException e) {
System.out.println("URL地址错误");
} catch (Exception e) {
// 打开注释查看详细报错异常信息
// e.printStackTrace();
}
}
/*
* 读取返回结果
*/
private static String read(InputStream is) throws IOException {
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "utf-8");
sb.append(line);
}
br.close();
return sb.toString();
}
}
调用返回
{
"LogisticCode":"780098068058",
"ShipperCode":"ZTO",
"Traces":[
{
"AcceptStation":"【广州市】 【广州花都】(020-37738523) 的 马溪 (18998345739) 已揽收",
"AcceptTime":"2018-03-07 00:01:55"
},
{
"AcceptStation":"【广州市】 快件离开 【广州花都】 发往 【石家庄中转】",
"AcceptTime":"2018-03-07 00:40:57"
},
{
"AcceptStation":"【广州市】 快件到达 【广州中心】",
"AcceptTime":"2018-03-07 01:36:53"
},
{
"AcceptStation":"【广州市】 快件离开 【广州中心】 发往 【石家庄】",
"AcceptTime":"2018-03-07 01:38:45"
},
{
"AcceptStation":"【石家庄市】 快件到达 【石家庄】",
"AcceptTime":"2018-03-08 21:00:44"
},
{
"AcceptStation":"【石家庄市】 快件离开 【石家庄】 发往 【长安三部】",
"AcceptTime":"2018-03-08 23:43:44"
},
{
"AcceptStation":"【石家庄市】 快件已到达 【长安三部】(0311-85344265),业务员 容晓光(13081105270) 正在第1次派件, 请保持电话畅通,并耐心等待",
"AcceptTime":"2018-03-09 09:03:10"
},
{
"AcceptStation":"【石家庄市】 快件已在 【长安三部】 签收,签收人: 本人, 感谢使用中通快递,期待再次为您服务!",
"AcceptTime":"2018-03-09 11:59:26"
}
],
"State":"3",
"Success":true,
"Courier":"容晓光",
"CourierPhone":"13081105270",
"updateTime":"2019-08-27 13:56:19",
"takeTime":"2天20小时14分",
"Name":"中通快递",
"Site":"www.zto.com",
"Phone":"95311",
"Logo":"https://img3.fegine.com/express/zto.jpg",
"Reason":"查询成功"
}
返回的信息还是非常全面的