| 参数名称 | 类型 | 传递方式 | 是否必填 | 描述 |
|---|---|---|---|---|
| Token | String | http header | 是 | 验证加密值 Md5(AppId+Nonce+SecretKey+TimeStamp) 加密的32位小写字符串 |
| TimeStamp | Long | http header | 是 | 时间戳(毫秒),当前调用方时间戳 |
| AppId | String | http header | 是 | AppId,线下邮件通知 |
| Nonce | Integer | http header | 是 | 六位随机数字 |
基于 HTTP 协议调用 API,基本调用流程为:
根据 API 填充参数
生成签名
拼装 HTTP 请求
发起 HTTP 请求
获取 HTTP 响应
解析 json 结果
在 HTTP 请求中需发送 Token 字段,Token 字段为将 AppId、Nonce、SecretKey 和TimeStamp 加密后的签名内容。签名算法为 lowercase(md5(AppId+Nonce+SecretKey+TimeStamp))
* 注意:如果用户的请求方法是 GET,或者请求方法为 POST 同时 Content-Type 为 application/x-www-form-urlencoded,则发送请求时所有请求参数的值均需要做 URL 编码,参数键和=符号不需要编码。非 ASCII 字符在 URL 编码前需要先以 UTF-8 进行编码。
* 注意:有些编程语言的网络库会自动为所有参数进行 urlencode,在这种情况下,就不需要对签名串进行 URL 编码了,否则两次 URL 编码会导致签名失败
| 参数名称 | 类型 | 传递方式 | 是否必填 | 描述 |
|---|---|---|---|---|
| Token | String | http header | 是 | 验证加密值 Md5(AppId+Nonce+SecretKey+TimeStamp) 加密的32位小写字符串 |
| TimeStamp | Long | http header | 是 | 时间戳(毫秒),当前调用方时间戳 |
| AppId | String | http header | 是 | AppId,线下邮件通知 |
| Nonce | Integer | http header | 是 | 六位随机数字 |
// data 为数组
{
//应答码
"code":200,
//查询是否成功
"success":true,
//响应信息
"message":"Successful!",
//响应数据
"result":{
"data":[
{
}
],
//分页条数
"pageSize":10,
//总条数
"totalCount":10,
//当前页码
"pageNum":1
}
}
// data 为对象
{
"code":200,
"success":true,
"message":"Successful!",
"result":{
"data":{
}
}
}
{
"success":false,
"message":"当前的 appId 无效或者还未生效中",
"code":101
}
| 应答码 | 含义 | 级别 |
|---|---|---|
| 101 | 当前的 appId 无效或者还未生效中 | 系统级 |
| 102 | 当前 appId 已欠费 | 系统级 |
| 103 | 当前 appId 被暂停使用 | 系统级 |
| 104 | 接口正在维护中 | 系统级 |
| 105 | 接口已下线停用 | 系统级 |
| 107 | 被禁止的 IP | 系统级 |
| 108 | 请求格式错误,请重试 | 系统级 |
| 109 | 请求超过系统限制 | 系统级 |
| 110 | 当前查询连续出错,请等 2 小时后重试 | 系统级 |
| 111 | 接口权限未开通 | 系统级 |
| 112 | 签名错误 | 系统级 |
| 113 | 当前接口已被删除,请重新申请 | 系统级 |
| 114 | 当前接口已被禁用,请联系管理员 | 系统级 |
| 115 | 身份验证错误 | 系统级 |
| 199 | 系统未知错误,请联系技术客服 | 系统级 |
| 200 | 查询成功 | 服务级 |
| 201 | 查询失败 | 服务级 |
| 202 | 查询参数错误,请检查 | 服务级 |
| 203 | 系统查询有异常 | 服务级 |
| 204 | 请至少输入一个参数 | 服务级 |
| 205 | 等待处理中 | 服务级 |
| 207 | 请求数据的条目数超过上限 | 服务级 |
| 208 | 此接口不支持此类型查询 | 服务级 |
| 213 | 参数长度不能小于 n | 服务级 |
| 214 | 您还未购买过该接口,请先购买 | 服务级 |
| 215 | 不支持的查询关键字 | 服务级 |
| 216 | 此接口调用次数已达上限 | 服务级 |
| 299 | 无效的请求 | 服务级 |
import com.google.common.collect.Maps;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;
import java.util.Map;
public class JavaDemo {
public static void main(String[] args) throws IOException {
String AppId = "";
String SecretKey = "";
Long TimeStamp = System.currentTimeMillis();
Integer Nonce = 123456; //使用随机六位数字
String Token = getToken(AppId,SecretKey,String.valueOf(Nonce),String.valueOf(TimeStamp));
String url = ""; //接口地址
Map<String,Object> params = Maps.newHashMap();
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpget = new HttpGet(url);
httpget.setHeader("Token", Token);
httpget.setHeader("TimeStamp", String.valueOf(TimeStamp));
httpget.setHeader("AppId", AppId);
httpget.setHeader("Nonce", String.valueOf(Nonce));
CloseableHttpResponse response = httpclient.execute(httpget);
}
// 获取Token
protected static final String getToken(String AppId, String SecretKey, String Nonce, String TimeStamp) {
return DigestUtils.md5Hex(AppId.concat(Nonce).concat(TimeStamp).concat(SecretKey)).toLowerCase();
}