缩短url-url短地址链接

之前给合作方二维码时隐藏的url过长,导致合作方提出在打印的时候打印不出来的问题,要求url长度在50字节内,所以写了缩短url功能。

var url = string.Format("{0}/Billing/ScanCode?TenantId={1}&BussinessType={2}&groupNumber={3}&DeviceId={4}", baseUrl, args.TenantId, (int)BussinessType.SyncTransaction, groupNumber, device.Id);

//过长的url 优化成短url
var creatShotUrl = string.Format("/Billing/ScanCode?TenantId={0}&BussinessType={1}&groupNumber={2}&DeviceId={3}", args.TenantId, (int)BussinessType.SyncTransaction, groupNumber, device.Id);
var invoiceUrlRepository = RF.Concrete<InvoiceUrlRepository>();
InvoiceUrl model = new InvoiceUrl();
string id = CommonShortUrl.GetShorturl(creatShotUrl, 0);
url = baseUrl + "/t?e=" + id;

再添加一个控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Rafy.Domain;
namespace DBI.SaaS.Web.Controllers
{
    public class TController : Controller
    {

        // GET: InvoiceUrl
        /// <summary>
        /// 根据短url的key 获取 真实的url 并跳转
        /// </summary>
        /// <param name="urlKey">短url的key</param>
        /// <returns></returns>
        [Route("c/{e:maxlength(15)}")]
        public ActionResult Index(string e)
        {
            if (!string.IsNullOrEmpty(e))
            {
                long id = CommonShortUrl.UnShort(e);
                var invoiceUrlRepository = RF.Concrete<InvoiceUrlRepository>();
                //查询
                var q = new CommonQueryCriteria();
                var model = invoiceUrlRepository.GetById(id);
                if (model == null)
                {
                    return Content("不存在的url!");
                }
                return Redirect(model.UrlValue);
            }
            else
            {
                return Content("参数错误!");
            }
        }
    }
}

缩短url控制器代码

using Rafy.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DBI.SaaS.Web.Controllers
{
    public class CommonShortUrl
    {
        static string Number = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        ///
        /// 压缩ID标识
        ///
        ///
        ///
        public static string Short(long n)
        {
            string result = string.Empty;
            int l = Number.Length;
            while (n / l >= 1)
            {
                result = Number[(int)(n % l)] + result;
                n /= l;
            }
            result = Number[(int)n] + result;
            return result;
        }

        ///
        /// 还原ID标识
        ///
        ///
        ///
        public static long UnShort(string s)
        {
            long result = 0;
            s = s.Trim();
            int l = s.Length;
            int m = Number.Length;
            for (int x = 0; x < l; x++)
            {
                result += Number.IndexOf(s[l - 1 - x]) * (long)Math.Pow(m, x);
            }
            return result;
        }

        /// <summary>
        /// 简化 url
        /// </summary>
        /// <param name="paramUrl"></param>
        /// <returns></returns>
        public static string GetShorturl(string paramUrl,int urlType)
        {
            //过长的url 优化成短url
            var invoiceUrlRepository = RF.Concrete<InvoiceUrlRepository>();
            InvoiceUrl insertModel = new InvoiceUrl();
            insertModel.UrlValue = paramUrl;
            insertModel.UrlType = urlType;
            invoiceUrlRepository.Save(insertModel);
            return CommonShortUrl.Short(insertModel.Id);
        }
    }
}

这样缩短后的url地址:http://www.***.com/t?e=***

时间: 2024-10-20 11:07:25

缩短url-url短地址链接的相关文章

腾讯短网址(url.cn短链接)生成接口API推荐

简要描述 腾讯短网址(url.cn短链接)生成api接口是腾讯官方对外公开的短网址生成接口,可以将一个冗长的链接缩短成10个字符以内的短链接. 应用场景 腾讯短网址的应用场景很广,譬如短信营销.邮件推广.微信营销.QQ营销.自媒体推广.渠道推广等,都会用到短网址.究其原因是在于短网址可以降低推广成本.用户记忆成本,提高用户点击率:在特定的场景下推广还能规避关键词,防止域名被拦截,隐藏真实地址等. 腾讯短网址接口 格式一:http://qturl.cn/urldwz/api.html?url=ht

URL短地址压缩算法

时下,短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的t.cn等.我们在新浪微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://t.cn/hrYnr0.为什么要这样做的,原因我想有这样几点: 1.微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了. 2.短网址可以在我们项目里可以很好的对开放级URL进行管理.有一部分网址可以会涵盖性.

URL压缩算法的短地址

时下,短网址应用已经在全国各大微博上開始流行了起来.比如QQ微博的url.cn,新郎的t.cn等. 我们在新浪微博上公布网址的时候.微博会自己主动判别网址.并将其转换,比如:http://t.cn/hrYnr0. 为什么要这样做的.原因我想有这样几点: 1.微博限制字数为140字一条,那么假设我们须要发一些连接上去,可是这个连接很的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被同意的,所以短网址应运而生了. 2.短网址能够在我们项目里能够非常好的对开放级URL进行管理.有一部分网址能够会

转载 URL短地址压缩算法

由于文章转载太多,所以找到出处,作者看到别生气 - - /// <summary> /// 生成salt /// </summary> /// <returns></returns> public static string GenerateSalt() { byte[] data = new byte[0x10]; new RNGCryptoServiceProvider().GetBytes(data); return Convert.ToBase64S

C#如何实现url短地址?C#短网址压缩算法与短网址原理入门

c# url短地址压缩算法与短网址原理的例子,详细介绍了短网址的映射算法,将长网址md5生成32位签名串,分为4段,每段8个字节,然后生成短网址,具体见文本实例. 短网址映射算法: 将长网址md5生成32位签名串,分为4段,每段8个字节:对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理:这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串:总的md5串可以获得4个6位串:取里面的任意一个就可作为这个长u

URL短地址压缩算法 微博短地址原理解析 (Java实现)

最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C#的算法,有.Net的算法,有PHP的算法,就是没有找到Java版的短网址(ShortUrl)的算法,很是郁闷.同时还发现有不少网友在发帖求助,怎么实现Java版的短网址(ShortUrl)的算法.干脆一不做,二不休,参考了一下网上比较流行的PHP版短网址(ShortUrl)算法: 再根据自己的理解,用Java实现了该短网址(ShortUrl)的算法.(\(^o^)/YES!我还真厉害!) 先来废话一下,是在别人的

url短地址

现在好多URL连接都使用的短地址不知道什么意思,网上找了篇例子读了一下代码做参考 <?php class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static function short($url) { $key = "alexis"; $urlhash = md5($k

微信(url.cn)短网址生成api接口以及php,python的调用方法

微信营销中,原链接太长总是很不方便分享,转化率极低.所以我们一般使用微信短链接即url.cn的短网址样式来缩短我们的链接,再发布到微信平台进行链接分享,今天给大家分享一个微信短链接生成接口,以及微信url.cn短网址的生成方式. 微信短链接生成api接口: http://qingmeidwz.cn/wxshorturl.php?url_long=http://www.baidu.com 使用说明: 将api接口地址中 "http://www.baidu.com" 换成需要缩短的网址,然

2020最新新浪短网址API接口分享(附腾讯url.cn短网址API接口)

微信营销中,原链接太长总是很不方便分享,转化率极低.所以我们一般使用微信短链接即url.cn的短网址或者新浪微博(t.cn)短网址样式来缩短我们的链接,再发布到微信平台进行链接分享,今天给大家分享一个微信短链接生成接口,以及微信url.cn短网址新浪t.cn短网址的生成方式.   新浪t.cn短网址api接口: http://qingmeidwz.cn/shorten.php?url_long=http://www.baidu.com 微信url.cn短网址生成api接口: http://qin