http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7232|回复: 14

[其他] C# 短链接

[复制链接]
发表于 2013-10-16 13:38:50 | 显示全部楼层 |阅读模式
hello,求个算法。
  功能:将长链接变为短链接

背景:因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少。短链接的主要职责就是把原始链接很长的地址压缩成只有6 个字母的短链接地址,当我们点击这6 个字母的链接后,我们又可以跳转到原始链接地址。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-10-16 14:42:42 | 显示全部楼层
这就是一个跳转,给这个长链接存储一下对应的短地址,当请求这个短地址时,程序自动跳转到长链接就行了。不需要什么算法法,就是存储一个键值对就行
发表于 2013-10-16 14:50:38 | 显示全部楼层
研究下这个:http://surl.sinaapp.com/
发表于 2013-10-16 16:18:13 | 显示全部楼层
站长苏飞 发表于 2013-10-16 14:42
这就是一个跳转,给这个长链接存储一下对应的短地址,当请求这个短地址时,程序自动跳转到长链接就行了。不 ...

字符是对应的,但按我们自己对应的规则来,跳转时能自动解析?

下面是我参照一网友的代码写的,请站长指正:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Security.Cryptography;
  6. using System.Globalization;
  7. //参考链接:http://blog.csdn.net/querdaizhi/article/details/6712291
  8. namespace yournamespace
  9. {
  10.     class GetShortUrl
  11.     {
  12.         public static string GetShortUrls(string longurl)
  13.         {
  14.             string tem="";
  15.             string[] temUrl=shortUrl(longurl);
  16.             for (int i = 0; i < 4; i++)
  17.             {
  18.                 tem += temUrl[i] + "|";
  19.             }
  20.             return tem.Substring(0, tem.Length - 1);
  21.         }
  22.         public static String[] shortUrl(String url)
  23.         {
  24.             String[] chars = new String[] { "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" ,

  25.               "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" ,

  26.               "u" , "v" , "w" , "x" , "y" , "z" , "0" , "1" , "2" , "3" , "4" , "5" ,

  27.               "6" , "7" , "8" , "9" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" ,

  28.               "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" ,

  29.               "U" , "V" , "W" , "X" , "Y" , "Z"
  30.             };
  31.             String sMD5EncryptResult = GetMD5(url);
  32.             String hex = sMD5EncryptResult;
  33.             String[] resUrl = new String[4];
  34.             for (int i = 0; i < 4; i++)
  35.             {
  36.                 String sTempSubString = hex.Substring(i * 8, 8);
  37.                 long lHexLong = 0x3FFFFFFF & long.Parse(sTempSubString, NumberStyles.HexNumber);
  38.                 String outChars = "";
  39.                 for (int j = 0; j < 6; j++)
  40.                 {
  41.                     long index = 0x0000003D & lHexLong;
  42.                     outChars += chars[(int)index];
  43.                     lHexLong = lHexLong >> 5;
  44.                 }
  45.                 resUrl[i] = outChars;
  46.             }
  47.             return resUrl;
  48.         }
  49.         private static string GetMD5(String input)
  50.         {
  51.             byte[] result = Encoding.Default.GetBytes(input);
  52.             MD5 md5 = new MD5CryptoServiceProvider();
  53.             byte[] output = md5.ComputeHash(result);
  54.             return BitConverter.ToString(output).Replace("-", "");
  55.         }
  56.     }
  57. }
  58. 执行:
  59. MessageBox.Show(GetShortUrl.GetShortUrls("http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml"));//生成4个可用字符串
复制代码
发表于 2013-10-16 16:22:18 | 显示全部楼层
当然能啊跳转时根据短地址取出来对应的长地然后进行跳转

比如
对应表
短地址  原地址
555    www.sufeinet.com
666    so.sufeinet.com

输入555就直接跳转到www.sufeinet.com就行了。

发表于 2013-10-16 16:23:36 | 显示全部楼层
怎么生成不重要,只要是唯一的就行。根据短地址能找到长地址就算是Ok了

到时候直接使用Response.Redirect();跳转
发表于 2013-10-16 16:24:09 | 显示全部楼层
站长苏飞 发表于 2013-10-16 16:22
当然能啊跳转时根据短地址取出来对应的长地然后进行跳转

比如

你把你的短链接给我,我也能正常打开吗?
发表于 2013-10-16 16:25:51 | 显示全部楼层
当然可以啊,其实就是你做了一个跳转服务。

发表于 2013-10-16 16:27:09 | 显示全部楼层
估计楼主的目的发广告,短链发出后,别人要能打开才有用。
发表于 2013-10-16 16:27:43 | 显示全部楼层
参考下这个
http://baid.us/
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-29 13:30

© 2014-2021

快速回复 返回顶部 返回列表