什么是长连接?

HTTP1.1协议规定了web地址默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),所以在web服务端获取到的链接都只能是原始长连接。

什么是短连接?

短连接(short-url),顾名思义就是在形式上比较短的链接,可能很多朋友都已经不再陌生,特别是在微博应用中十分普遍,比如,当我们在腾讯、新浪微博发微博时有时发很长的网址连接,但由于微博只限制140个字,所以微博就自动把您发的长连接给转换成短连接了。无可否认在微博和手机短信提醒等限制字数的地方来使用短网址,的确是一个不错的方案。

长连接和短连接转换接口

接口使用说明:

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多亿后才会出现重复的可能。

java长连接转短连接_HTTP的长连接和短连接转换接口(API)相关推荐

  1. 长连接、短连接、短轮询、长轮询

    长连接.短连接.短轮询.长轮询 短连接:每次Http请求都会建立Tcp连接,管理容易 长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接,管理难 短轮询:重复发送Http请求, ...

  2. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  3. tcp协议中的长连接和短连接服务器,谈谈HTTP协议中的短轮询、长轮询、长连接和短链接...

    undefined 在之前总结 WebSocket 的时候就已经提到过短长轮询了~~今天看公众号文章,又把长短连接引进来一起分析.感觉这种总结很棒,那么我们一起看看呗 长短连接 听说长短连接的话,应该 ...

  4. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    来源:伯乐在线专栏作者 - 左潇龙 链接:http://web.jobbole.com/85541/ 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目 ...

  5. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  6. 转载的--------------------HTTP协议中的短轮询、长轮询、长连接和短连接

    最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此便趁着这个机会,好好了解了一下HTTP的长长 ...

  7. java HttpURLConnection类的disconnect方法与http长连接

    disconnect方法 java 自带的HttpURLConnection类有个关闭连接的方法disconnect(),是用于关闭http连接的,但是有一个问题在于,http连接一直都是一次性的,不 ...

  8. 【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法—实践篇

    1. 查看系统网络配置和当前TCP状态         在定位并处理应用程序出现的网络问题时,了解系统默认网络配置是非常必要的.以x86_64平台Linux kernelversion 2.6.9的机 ...

  9. http响应最大时长 nginx_nginx反向代理时如何保持长连接

    ·[场景描述] HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟. 如果我们使用了nginx去作为 ...

  10. 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...

    在服务器建立服务端,与多个 tcp 连接保持长连接,服务端会根据客户端发送的 token 验证确定是否保持长连接建立"session"缓存, 在某个状态开启时(我称为存储状态),要 ...

最新文章

  1. 科学教师与实验教师工作计算机,计算机实验指导教师工作职责
  2. Nature调查:6%中国科研人年薪超50万元!
  3. 汇编实验1遇到的问题及解决之记录(以及尚未解决的疑惑,大神可以帮帮看看吗)
  4. 【caffe解读】 caffe从数学公式到代码实现2-基础函数类
  5. 虚拟机上的ubuntu安装vmware tools
  6. 后台执行UNIX/Linux命令和脚本的五种方法
  7. elasticsearch api中的delete操作
  8. ios 数字键盘左下角添加按钮_iOS8数字键盘加左下角完成button
  9. windows2003下防火墙ISA大型实验
  10. java构造方法赋值内存图_java 面向对象(九):类的结构:构造器(一)简介;属性赋值顺序;JavaBean的概念...
  11. MongoDB中文社区年终盛典
  12. python数据结构剑指offer-重建二叉树
  13. python simple example
  14. Linux(CentOS)系统下设置nginx开机自启动
  15. echart添加文本_ECharts自定义富文本
  16. 庆祝livid公布Bible的源代码,鼓掌~~
  17. 微信小程序md5加密支持中文和特殊字符
  18. checkbox选中和不选中 jqu_jQuery解决checkbox未选中不提交值的问题
  19. 常见的爬虫乱码的解决办法
  20. Google收录了内页,但是百度不收录新站内页

热门文章

  1. 一文介绍解银行卡验证api接口详情
  2. Excel单元格设灰色及锁定
  3. 二项分布期望和方差的公式推导
  4. 纯css绘制斜线表头
  5. 计算机表格画斜线,word表格斜线_Word2010怎么绘制斜线表头-太平洋IT百科手机版...
  6. 7、微信小程序-wxs脚本
  7. 探索图片透明度叠加方式
  8. 国内外常用的MD5在线解密网站
  9. 用RePKG解包.pkg文件【Wallpaper Engine】
  10. STM32 之十二 FLASH 使用详解 及 LL 库 FLASH 驱动实现