HTTP1.1協(xié)議規(guī)定了web地址默認(rèn)保持長(zhǎng)連接(HTTP persistent connection ,也有翻譯為持久連接),所以在web服務(wù)端獲取到的鏈接都只能是原始長(zhǎng)連接。
成都創(chuàng)新互聯(lián)公司主營(yíng)荔城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開(kāi)發(fā),荔城h5成都微信小程序搭建,荔城網(wǎng)站營(yíng)銷(xiāo)推廣歡迎荔城等地區(qū)企業(yè)咨詢
短連接(short-url),顧名思義就是在形式上比較短的鏈接,可能很多朋友都已經(jīng)不再陌生,特別是在微博應(yīng)用中十分普遍,比如,當(dāng)我們?cè)隍v訊、新浪微博發(fā)微博時(shí)有時(shí)發(fā)很長(zhǎng)的網(wǎng)址連接,但由于微博只限制140個(gè)字,所以微博就自動(dòng)把您發(fā)的長(zhǎng)連接給轉(zhuǎn)換成短連接了。無(wú)可否認(rèn)在微博和手機(jī)短信提醒等限制字?jǐn)?shù)的地方來(lái)使用短網(wǎng)址,的確是一個(gè)不錯(cuò)的方案。
微信短鏈接接口:http://lnurl.cn/weixin/short?link=http://www.baidu.com
1、在線使用
將API地址中?"http://www.baidu.com"?的部分換成自己的長(zhǎng)連接,然后復(fù)制完整地址前往瀏覽器中粘貼打開(kāi)就能生成了。(簡(jiǎn)而言之就是更換url后面的鏈接)
2、請(qǐng)求接口
如果你的量比較大,一條一條轉(zhuǎn)換太麻煩了,需要批量生成的話,可以將API接口對(duì)接到程序中請(qǐng)求生成,請(qǐng)求示例如下。
?
PHP請(qǐng)求示例:
$url?=?'http://www.baidu.com'; $api_url?=?'http://lnurl.cn/sina/short-api?url_long=http://www.baidu.com; $short_url?=?file_get_contents($api_url); echo?$short_url;
Java請(qǐng)求示例:
public?static?void?main(String?path[])?throws?Exception?{ URL?u?=?new?URL("http://lnurl.cn/sina/short-api?url_long=http://www.baidu.com"); InputStream?in?=?u.openStream(); ByteArrayOutputStream?out?=?new?ByteArrayOutputStream(); try?{ byte?buf[]?=?new?byte[1024]; int?read?=?0; while?((read?=?in?.read(buf))?>?0)?{ out.write(buf,?0,?read); } }?finally?{ if?(?in?!=?null)?{ in?.close(); } } byte?b[]?=?out.toByteArray(); System.out.println(new?String(b,?"utf-8")); }
Python請(qǐng)求示例:
import?urllib,?urllib2,?sys host?=?'http://lnurl.cn' path?=?'/sina/short-api' method?=?'GET' querys?=?'url_long=http%3A%2F%2Fwww.baidu.com' bodys?=?{} url?=?host?+?path?+?'?'?+?querys request?=?urllib2.Request(url) response?=?urllib2.urlopen(request) content?=?response.read() if?(content): print(content)
1、調(diào)用API接口時(shí),只需將 “http://www.baidu.com”換成需要縮短的長(zhǎng)鏈接即可。
2、接口支持鏈接中帶參數(shù),但要注意的是當(dāng)鏈接中出現(xiàn) & 符號(hào)時(shí),請(qǐng)用 %26 代替(或者使用url編碼),否則參數(shù)可能會(huì)丟失。
3、更換鏈接時(shí),必須要以http(s)://開(kāi)頭,否則可能會(huì)導(dǎo)致短網(wǎng)址生成失敗或者生成的短網(wǎng)址無(wú)法跳轉(zhuǎn)訪問(wèn)原網(wǎng)站。
?
1、長(zhǎng)鏈接轉(zhuǎn)換后,為什么結(jié)尾的參數(shù)丟失了?
答:因?yàn)殚L(zhǎng)鏈接中含有特殊字符,需要將url編碼后再使用接口生成。
2、接口沒(méi)有返回結(jié)果,是什么情況?
答:有些時(shí)候接口返回?cái)?shù)據(jù)會(huì)有延遲,超時(shí)未返回即生成失敗,也就不會(huì)返回結(jié)果;或者是因?yàn)樵溄颖环饬恕?/p>
3、生成的短連接有效期是多久?有沒(méi)有訪問(wèn)次數(shù)限制?
答:生成的短連接(t.cn&url.cn)是永久有效的,沒(méi)有點(diǎn)擊次數(shù)限制,可以放心使用。
?
算法一
1) 將長(zhǎng)網(wǎng)址md5生成32位簽名串,分為4段, 每段1個(gè)字節(jié)(即8位);
2) 對(duì)這四段循環(huán)處理, 取4個(gè)字節(jié)(32位), 將他看成16進(jìn)制串與0x3fffffff(30位1)與操作, 即超過(guò)30位的忽略處理;
3) 這30位分成6段, 每5位的數(shù)字作為字母表的索引取得特定字符, 依次進(jìn)行獲得6位字符串;
4) 總的md5串可以獲得4個(gè)6位串; 取里面的任意一個(gè)就可作為這個(gè)長(zhǎng)url的短url地址;
算法二
把數(shù)字和字符組合做一定的映射,就可以產(chǎn)生唯一的字符串,如第62個(gè)組合就是aaaaa9,第63個(gè)組合就是aaaaba,再利用洗牌算法,把原字符串打亂后保存,那么對(duì)應(yīng)位置的組合字符串就會(huì)是無(wú)序的組合。
把長(zhǎng)網(wǎng)址存入數(shù)據(jù)庫(kù),取返回的id,找出對(duì)應(yīng)的字符串,例如返回ID為1,那么對(duì)應(yīng)上面的字符串組合就是bbb,同理 ID為2時(shí),字符串組合為bba,依次類(lèi)推,直至到達(dá)62種組合后才會(huì)出現(xiàn)重復(fù)的可能,所以如果用上面的62個(gè)字符,任意取6個(gè)字符組合成字符串的話,你的數(shù)據(jù)存量達(dá)到500多億后才會(huì)出現(xiàn)重復(fù)的可能。
當(dāng)前文章:HTTP的長(zhǎng)連接和短連接轉(zhuǎn)換接口(API)
文章URL:http://aaarwkj.com/article48/pegcep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、手機(jī)網(wǎng)站建設(shè)、商城網(wǎng)站、企業(yè)網(wǎng)站制作、全網(wǎng)營(yíng)銷(xiāo)推廣、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)