短链接
服务订价
接口文档

短链接生成器,数据推广追踪分析

dzjh.cc
生成短链接
https://dzjh.cc/iAcbsd2
测试链接:30分钟有效

服务定价

普通客户
免费
VIP客户
¥2000 /年
定制客户
请联系我们
有效期 30分钟 不限制
服务有效,链接有效
不限制
服务有效,链接有效
接口调用 不支持 支持
并发上限:50条/秒
支持
创建短链上限 默认100万条(超出联系客服增加)
并发上限:5条/秒
默认100万条(超出联系客服增加)
并发上限:50条/秒
无上限
点击上限 无上限
并发上限:1000条/秒
无上限
并发上限:1000条/秒
无上限
统计访问次数 支持 支持 支持

接口文档

签名方式

MD5(key + timestamp + secret) 然后转小写

创建接口

请求 URL:https://dzjh.cc/v1/short-link/create

请求 method:POST

Content-Type: application/json;charset=UTF-8

请求编码:UTF-8

请求头

KEY 类型 说明
key String 必填:分配的客户端ID
timestamp String 必填:时间戳:13 位到毫秒,例如:1650982443340
sign String 必填:签名

请求参数

参数 类型 说明
url String 必填:目标 URL
desc String 必填:目标URL说明
test boolean 非必填:是否测试链接,true 表示测试链接,测试链接只有 30 分钟有效期

示例代码(java)

public ResData create(String url, String desc){
    JSONObject param = new JSONObject();
    param.put("url",url);
    param.put("desc",desc);
    return this.post("/v1/short-link/create",param,ShortLinkCreateDto.class);
}

private ResData post(String url,JSONObject param){
    long timestamp = System.currentTimeMillis();
    Map headers = new HashMap<>();
    headers.put("key",config.getKey());
    headers.put("timestamp",String.valueOf(timestamp));
    headers.put("sign", MD5Utils.md5(config.getKey()+timestamp+config.getSecret()));
    headers.put("Content-Type","application/json;charset=UTF-8");
    String finalUrl = config.getDomain() + url;
    String ret = this.post(finalUrl,param == null ? "" : param.toJSONString(),"UTF-8",headers);
    log.info("短链接 post url={},req={},ret={}",finalUrl,param,ret);
    if(StringUtils.isBlank(ret)){
        return ResData.error("接口返回空白");
    }
    JSONObject retJson = Utils.toJson(ret);
    if(retJson == null){
        return ResData.error("接口返回错误");
    }
    if(!"0".equals(retJson.getString("code"))){
        return ResData.error(retJson.getString("msg"));
    }
    return ResData.success(retJson);
}

public String post(String url,String body,String charset,Map headers){
    HttpPost post = new HttpPost(url);
    CloseableHttpResponse response = null;
    try {
        if(headers != null && headers.size() > 0){
            for(Map.Entry item : headers.entrySet()){
                post.setHeader(new BasicHeader(item.getKey(),item.getValue()));
            }
        }
        post.setEntity(new StringEntity(body,charset));
        response = httpClient.execute(post);
        String result = EntityUtils.toString(response.getEntity(),charset);
        if(StringUtils.isBlank(result)){
            log.error("http 返回消息未空,url={},body={},charset={}",url,body,charset);
            return "";
        }
        return result;
    }catch (Exception e){
        log.error("http 请求错误,url={},body={},charset={}",url,body,charset,e);
    }finally {
        try {
            if(response != null) {
                response.close();
            }
        }catch (Exception ignored){}
    }
    return "";
}

public class MD5Utils {
    private final static char [] hexDigits = {
      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
    };
    public static String md5(String txt){
        try {
            return md5(txt.getBytes(StandardCharsets.UTF_8));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    public static String md5(byte [] source){ //用来将字节转换成 16 进制表示的字符
        String result;
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(source);
            byte[] tmp = md.digest();
            //用16进制数表示需要32位
            char[] str = new char[32];
            for(int i=0,j=0; i < 16; i++){
                //j表示转换结果中对应的字符位置
                //从第一个字节开始,对 MD5 的每一个字节
                //转换成 16 进制字符
                byte b = tmp[i];
                //取字节中高 4 位的数字转换
                //无符号右移运算符>>> ,它总是在左边补0
                //0x代表它后面的是十六进制的数字. f转换成十进制就是15
                str[j++] = hexDigits[b>>>4 & 0xf];
                // 取字节中低 4 位的数字转换
                str[j++] = hexDigits[b&0xf];
            }
            result = new String(str);//结果转换成字符串用于返回
        } catch (Exception e) {
            result = "";
        }
        return result;

    }
}
现在,非常期待与您的又一次邂逅

智帷软件努力让每一次邂逅总能超越期待

智帷软件服务流程

丰富互联网信息化项目服务经验,让我们对项目实施的规范化、标准化有更多的理解

*注:以上只是简洁的流程,实际项目中流程会有更多细节,请悉知