HTTP的长连接和短连接转换接口(API)-创新互联
什么是长连接?
HTTP1.1协议规定了web地址默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),所以在web服务端获取到的链接都只能是原始长连接。
公司专注于为企业提供做网站、成都网站设计、微信公众号开发、商城建设,微信小程序,软件按需制作等一站式互联网企业服务。凭借多年丰富的经验,我们会仔细了解各客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联更提供一系列网站制作和网站推广的服务。什么是短连接?
短连接(short-url),顾名思义就是在形式上比较短的链接,可能很多朋友都已经不再陌生,特别是在微博应用中十分普遍,比如,当我们在腾讯、新浪微博发微博时有时发很长的网址连接,但由于微博只限制140个字,所以微博就自动把您发的长连接给转换成短连接了。无可否认在微博和手机短信提醒等限制字数的地方来使用短网址,的确是一个不错的方案。
长连接和短连接转换接口
新浪短链接接口:http://lnurl.cn/sina/short-api?link=http://www.baidu.com
微信短链接接口:http://lnurl.cn/weixin/short?link=http://www.baidu.com
接口使用说明:
1、在线使用
将API地址中 "http://www.baidu.com"的部分换成自己的长连接,然后复制完整地址前往浏览器中粘贴打开就能生成了。(简而言之就是更换url后面的链接)
2、请求接口
如果你的量比较大,一条一条转换太麻烦了,需要批量生成的话,可以将API接口对接到程序中请求生成,请求示例如下。
PHP请求示例:
$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请求示例:
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请求示例:
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、调用API接口时,只需将 “http://www.baidu.com”换成需要缩短的长链接即可。
2、接口支持链接中带参数,但要注意的是当链接中出现 & 符号时,请用 %26 代替(或者使用url编码),否则参数可能会丢失。
3、更换链接时,必须要以http(s)://开头,否则可能会导致短网址生成失败或者生成的短网址无法跳转访问原网站。
常见问题:
1、长链接转换后,为什么结尾的参数丢失了?
答:因为长链接中含有特殊字符,需要将url编码后再使用接口生成。
2、接口没有返回结果,是什么情况?
答:有些时候接口返回数据会有延迟,超时未返回即生成失败,也就不会返回结果;或者是因为原链接被封了。
3、生成的短连接有效期是多久?有没有访问次数限制?
答:生成的短连接(t.cn&url.cn)是永久有效的,没有点击次数限制,可以放心使用。
算法原理
算法一
1) 将长网址md5生成32位签名串,分为4段, 每段1个字节(即8位);
2) 对这四段循环处理, 取4个字节(32位), 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3) 这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4) 总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
算法二
把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。
把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理 ID为2时,字符串组合为bba,依次类推,直至到达62种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:HTTP的长连接和短连接转换接口(API)-创新互联
标题来源:http://myzitong.com/article/ijhjj.html