什么是长连接?

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

什么是短连接?

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

长连接和短连接转换接口

接口获取流程

2、进入页面后,点击“立即开通”获取接口授权key

3、注册账后获取接口key

4、获取接口

接口使用说明:

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. PHP tcp短链接,http请求怎样实现TCP长连接、短连接

    HTTP连接分为长连接和短连接,而我们现在常用的都是HTTP1.1,因此我们用的都是长连接. 这句话其实只对了一半,我们现如今的HTTP协议,大部分都是1.1的,因此我们平时用的基本上都是长连接.但是 ...

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

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

  10. 游戏消息服务器长链接,游戏服务器长连接

    游戏服务器长连接 内容精选 换一换 在游戏应用部署前,您需要了解需要部署的应用组件,以及各组件之间的关联关系.该游戏由四个部分组成:前台的游戏客户端,用户直接访问该客户端.后台有三个组件:mysql数 ...

最新文章

  1. Maven3.x 插件开发入门
  2. 如何检查密钥库文件中的证书名称和别名?
  3. _D类、E类、F类冷藏车是什么意思?
  4. JSP中动态添加 “添加附件选择框”
  5. java ojdbc 还需要装 oracle client 吗,ojdbc连接数据库
  6. python的matplotlib库polar_【Python】matplotlib库
  7. go调用ffmpeg
  8. python实现并发判重_寻找python大神!!!python如何多线程并发?
  9. 蛮力法 —— 求解迷宫问题 —— DFS和BFS
  10. PAT-乙级-1012. 数字分类 (20)
  11. 7年老员工的6点离职忠告
  12. 北风网android,北风网JAVA/ASP.NET/Android系列公开课视频教程入门项目必学课程
  13. html 字体最小多少,浏览器最小显示12px字体的解决方法
  14. mysql 左连接 左外连接吗_数据库左连接和左外连接有区别吗
  15. IP归属地解析之离线纯真数据库分享
  16. wdr通刷固件_西数硬盘维修工具WDR5.3简体中文版下载及图文教程
  17. 【HikariCP】HikariCP配置参数
  18. 利用PS制作GIF动图
  19. 带你了解什么叫大数据分析
  20. python三重积分_(整理)三重积分及其计算和多重积分.

热门文章

  1. Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java16 的新特性
  2. 因子分析法(Factor Analysis)是什么分析
  3. linux命令行打开写字板,在Linux操作系统中使用手写板
  4. 外卖返利cps小程序path
  5. Python3批量发送邮件,支持smpt的ssl验证,支持163和outlook邮箱,可发送html格式和附件,使用asyncio和线程池实现并发并行
  6. 货币金融学(米什金)笔记:金融体系、货币相关
  7. Swagger 分组配置
  8. word里面搜狗输入法突然不见了
  9. python opencv 图片对比度
  10. BOS Studio(金蝶BOS)的简单介绍