生成新浪短網(wǎng)址、百度短網(wǎng)址,t.cn / dwz.cn 的生成方式,短鏈還原
應(yīng)本站用戶要求開發(fā)了短鏈生成服務(wù),市面上的短鏈魚龍混雜,這里也說(shuō)明一下這個(gè)背后的產(chǎn)業(yè),我們?cè)谑褂眠^(guò)程中請(qǐng)擦亮眼睛去使用。
短鏈工具地址:http://zijieyoumin.cn/dwz.html
一、短鏈?zhǔn)褂玫娘L(fēng)險(xiǎn)
1、穩(wěn)定性
我們使用短鏈肯定希望短鏈服務(wù)穩(wěn)定,現(xiàn)在開發(fā)成本低,導(dǎo)致隨便幾個(gè)小時(shí)就可以搞一套短鏈服務(wù),買一個(gè)短一點(diǎn)的域名,開始開放出來(lái)給用戶使用,用一段時(shí)間后,隨著運(yùn)營(yíng)成本增加,說(shuō)停用就停用了。
2、收費(fèi)風(fēng)險(xiǎn)
短鏈開始火的時(shí)候好多這樣的產(chǎn)業(yè)滋生出來(lái),一般手段是開發(fā)一個(gè)短鏈服務(wù),好多都直接上百度推廣,讓你免費(fèi)用,等你用一段時(shí)間后,開始攔截你的鏈接跳轉(zhuǎn),然后開始收費(fèi)(一般理由為“由于大量用戶舉報(bào),所以停封,需要付費(fèi)解封”),而這個(gè)時(shí)候你的系統(tǒng)一般都上線了,或者都推廣出去了,好多人短鏈服務(wù)生成都是為了降低二維碼的復(fù)雜性,二維碼都印好了推廣出去了,不好修改,所以你沒(méi)辦法,必須付費(fèi)。
二、短鏈的使用場(chǎng)景
1、短信帶鏈接
手機(jī)發(fā)短信的時(shí)候,由于字?jǐn)?shù)限制,另外我們一般的鏈接過(guò)長(zhǎng),主要是因?yàn)橛蛎^(guò)長(zhǎng),再加上亂七八糟的參數(shù),發(fā)出去短信難看的很,用了短鏈后就很優(yōu)雅了。
2、短鏈接生成二維碼
二維碼的火爆和便捷,也帶來(lái)了一個(gè)難題,我們都知道二維碼表達(dá)的內(nèi)容有限,內(nèi)容越多,二維碼看上去越復(fù)雜,而且識(shí)別率越低,尤其配置較低的手機(jī)比較難識(shí)別內(nèi)容很多的二維碼,我們用短鏈可以解決這個(gè)問(wèn)題。先把長(zhǎng)鏈轉(zhuǎn)成短鏈,然后再去生成二維碼。
三、短鏈的生成
1、百度短鏈(dwz.cn)生成
dwz.cn就是短網(wǎng)址的首拼音縮寫,由百度提供服務(wù)。
優(yōu)點(diǎn):穩(wěn)定,畢竟是大公司開發(fā)。有數(shù)據(jù)報(bào)表:https://dwz.cn/console/report
缺點(diǎn):網(wǎng)址必須百度收錄了才可以生成。
>>正規(guī)生成:
①.申請(qǐng)apikey
申請(qǐng)網(wǎng)址:https://dwz.cn/console/userinfo需要開通開發(fā)者,跟著提示走就可以了。
②.接口代碼
常用的語(yǔ)言都有:https://dwz.cn/console/apidoc
然后HTTP調(diào)用即可生成。
抓包生成:
百度短網(wǎng)址的官方生成地址:https://dwz.cn/
生成的時(shí)候直接可以抓包:https://dwz.cn/admin/v2/create
參數(shù)就一個(gè):{"url":"你要生成的URL"}
這里就不過(guò)多講解。
2、新浪短鏈(t.cn)生成
主要講解新浪短鏈,直接上代碼。
//鏈接要做urlencode編碼
const u = encodeURIComponent("你要轉(zhuǎn)碼的長(zhǎng)連接");
$.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 調(diào)用,source
直接使用2849184197
即可,是官方的key
,放心使用。
就一個(gè)參數(shù)url_long=你生成的URL
,注意這里要做urlcode
編碼。
urlcode編碼在線工具:http://zijieyoumin.cn/encodeurl.html
四、短鏈的解碼
每一個(gè)短鏈服務(wù)一般自己會(huì)對(duì)應(yīng)一個(gè)解碼服務(wù),我懶得對(duì)接,而且現(xiàn)在的短鏈魚龍混雜,所以我就直接寫了一個(gè)通用的。直接上代碼。
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;
/**
* 短鏈 解析成長(zhǎng)鏈
* @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("解析失敗,確認(rèn)鏈接是否存在");
}
}
return SOMap.success().push("url",url);
}
其實(shí)就是通過(guò) http 請(qǐng)求,獲取301
、302
后的url
,有利有弊,使用了2種方式獲取,其他的語(yǔ)言模仿寫就可以了。里面的SOMap
為我的封裝,其實(shí)就是一個(gè)map
,我為了方便鏈?zhǔn)阶兂衫^承了LinkedHashMap
。另外AllClientPNames.HANDLE_REDIRECTS = "http.protocol.handle-redirects"。
版權(quán)所屬:SO JSON在線解析
原文地址:http://zijieyoumin.cn/blog/330.html
轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。
如果本文對(duì)你有幫助,那么請(qǐng)你贊助我,讓我更有激情的寫下去,幫助更多的人。