首页 新浪、百度短链的生成

新浪、百度短链的生成

chenmo 2020-4-21 0 87

1、百度短链(dwz.cn)生成

dwz.cn就是短网址的首拼音缩写,由百度提供服务。

优点:稳定,毕竟是大公司开发。有数据报表:https://dwz.cn/console/report

缺点:网址必须百度收录了才可以生成。

>>正规生成:

①.申请apikey

申请网址:https://dwz.cn/console/userinfo需要开通开发者,跟着提示走就可以了。

②.接口代码

常用的语言都有:https://dwz.cn/console/apidoc

然后HTTP调用即可生成。

抓包生成:

百度短网址的官方生成地址:https://dwz.cn/

生成的时候直接可以抓包:https://dwz.cn/admin/v2/create

参数就一个:{"url":"你要生成的URL"}

这里就不过多讲解。

2、新浪短链(t.cn)生成

主要讲解新浪短链,直接上代码。

//链接要做urlencode编码
const u = encodeURIComponent("你要转码的长连接");
$.ajax({
    url:"https://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long={%u}".fmt({u}),
    dataType:'jsonp',
    success:function (data) {
        if(data  && data.code ===1 ){
            var url = data.data.urls[0].url_short;
            outShortInfo(url);//输出短链方法
        }else{
            layer.msg('生成失败',so.defn);
        }
    }
});

直接  jsonp  调用,source直接使用2849184197即可,是官方的key,放心使用。

就一个参数url_long=你生成的URL,注意这里要做urlcode编码。

urlcode编码在线工具:https://www.sojson.com/encodeurl.html

四、短链的解码

每一个短链服务一般自己会对应一个解码服务,我懒得对接,而且现在的短链鱼龙混杂,所以我就直接写了一个通用的。直接上代码。

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.commons.httpclient.params.HttpParams;

/**
 * 短链 解析成长链
 * @param url
 * @return
 */
public static SOMap parse(String url){
    HttpClient client = new HttpClient();
    HttpMethod method = new HeadMethod(url);
    try {
        HttpParams params = client.getParams();
        params.setParameter(AllClientPNames.HANDLE_REDIRECTS, false);
        client.executeMethod(method);
        String aurl = method.getURI().getURI();
        if(StringUtils.equals(url,aurl)){
            method.releaseConnection();
            method =   new GetMethod(url);
            params = client.getParams();
            params.setParameter(AllClientPNames.HANDLE_REDIRECTS, false);
            client.executeMethod(method);
            aurl = method.getURI().getURI();
            return SOMap.success().push("url",aurl);
        }
        method.releaseConnection();
        return SOMap.success().push("url",aurl);
    } catch (IOException e) {
        Header headers = method.getResponseHeader("Location");
        if(null == headers || null == ( url = headers.getValue())){
            return SOMap.error("解析失败,确认链接是否存在");
        }
    }
    return SOMap.success().push("url",url);

}

其实就是通过  http  请求,获取301302后的url,有利有弊,使用了2种方式获取,其他的语言模仿写就可以了。里面的SOMap为我的封装,其实就是一个map,我为了方便链式变成继承了LinkedHashMap。另外AllClientPNames.HANDLE_REDIRECTS = "http.protocol.handle-redirects"。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/330.html

#短链接#

免责声明:本文仅代表作者个人观点,与本网站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
作者: chenmo 本文最后编辑于2020-4-21 11:54:46
chenmo

一个爱玩电脑,却又不沉迷游戏;喜欢网页设计,却又能力不足。喜欢网上到处灌,关注科技类新闻,寻搜有价值的网站。喜欢美剧,又喜爱电影,可以很宅,很宅,却又爱好户外骑行运动,喜欢接近大自然的心声。

作者的微博

发表评论: