Toggle navigation
首页
产品中心
全新RDIF.vNext低代码框架
镇店
.NET C/S开发框架
.NET Web敏捷开发框架
.NET 快速开发框架(全新EasyUI版本)
.NET 代码生成器
.NET WebAPI服务端开发框架
客户案例
付款方式
国思学堂
技术文章
新闻资讯
下载
关于
首页
技术文章
.NET(Core)
正文
原创
2019-04-23
浏览 (
10754
)
微信公众号开发C#系列-10、长链接转短链接
![](http://doc.rdiframework.net/blog/article/20190421115233673.png-pw) ## 1、概述 ## 短网址的好处众多,便于记忆,占用字符少等,现在市面上出现了众多的将长网址转变为短网址的方法,但是由于他们都是小的公司在幕后运营,所以很不靠谱,面对随时关闭服务的可能,这样也导致我们将转换好了的短网址也会失效失链!那么怎样才能使转换好了的短网址永久有效呢? ## 2、利用微信公众号接口实现长链接转短链接 ## 开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。微信公众号平台提供的长链接转短链接接口是: http请求方式: POST https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN 参数说明 | 参数 | 是否必须 | 说明 | |----------|:-------------:|------:| | access_token | 是 | 调用接口凭证 | | action | 是 | 此处填long2short,代表长链接转短链接 | | long_url | 是 | 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url | 调用举例 curl -d "{\"action\":\"long2short\",\"long_url\":\"http://wap.koudaitong.com/v2/showcase/goods?alias=128wi9shh&spm=h56083&redirect_count=1\"}" "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN" 返回说明,正常情况下,微信会返回下述JSON数据包给公众号: {"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"} ## 代码参考 ## /// <summary> /// 长链接转短链接 /// </summary> /// <param name="longUrl">长链接</param> /// <returns></returns> [HttpPost] [ValidateInput(false)] [LoginAuthorize] public ActionResult GetShortUrl(string longUrl) { WeixinOfficialAccountEntity currentWeixinOfficialAccountEntity = RDIFrameworkService.Instance.WeixinBasicService.GetCurrentOfficialAccountEntity(ManageProvider.Provider.Current()); string token = currentWeixinOfficialAccountEntity.AccessToken; //微信请求地址 string url = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=" + token; //请求的json参数 string data = "{\"action\":\"long2short\",\"long_url\":\"" + longUrl + "\"}"; string ret = string.Empty; try { byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(data); //转化 HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(url)); webReq.Method = "POST"; webReq.ContentType = "application/json"; webReq.ContentLength = byteArray.Length; Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length);//写入参数 newStream.Close(); HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); var ce = response.ContentEncoding; StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")); ret = sr.ReadToEnd(); sr.Close(); response.Close(); newStream.Close(); } catch (Exception ex) { } //正常情况下,微信会返回下述JSON数据包给公众号: //{"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"} string errcode = "";//错误码。 string errmsg = "";//错误信息。 string short_url = "";//短链接。 //解析响应信息 if (!string.IsNullOrWhiteSpace(ret)) { JObject jo = (JObject)JsonConvert.DeserializeObject(ret); errcode = jo["errcode"].ToString();//错误码。 errmsg = jo["errmsg"].ToString();//错误信息。 short_url = jo["short_url"].ToString();//短链接。 } return Content(new JsonMessage { Success = true, Data = short_url, Type = ResultType.Success, Message = errmsg }.ToString()); } ##3、使用效果参考## ![长链接转短链接界面](http://doc.rdiframework.net/blog/article/20190421114128669.png-pw) ----- ![生成的短链接效果](http://doc.rdiframework.net/blog/article/20190421114147754.png-pw) 上面的界面我们把链接地址[http://www.guosisoft.com/article/detail/190](http://www.guosisoft.com/article/detail/190)通过我们提供的长链接转短链接界面功能转成了短链接[https://w.url.cn/s/ALO1xZC](https://w.url.cn/s/ALO1xZC)。 ## 参考文章 ## [微信公众平台技术文档-官方](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) [Senparc.Weixin SDK + 官网示例源代码](https://github.com/JeffreySu/WeiXinMPSDK) [RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录](http://www.guosisoft.com/article/detail/190) [RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍](http://www.guosisoft.com/article/detail/169) [RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用](http://www.guosisoft.com/article/detail/189) [RDIFramework.NET代码生成器全新V3.5版本发布-重大升级](http://www.guosisoft.com/article/detail/199) ----- 一路走来数个年头,感谢RDIFramework.NET框架的支持者与使用者,大家可以通过下面的地址了解详情。 RDIFramework.NET官方网站:http://www.rdiframework.net/ RDIFramework.NET官方博客:http://blog.rdiframework.net/ 同时需要说明的,以后的所有技术文章以官方网站为准,欢迎大家收藏! RDIFramework.NET框架由专业团队长期打造、一直在更新、一直在升级,请放心使用! 欢迎关注RDIFramework.net框架官方公众微信(微信号:guosisoft),及时了解最新动态。 扫描二维码立即关注 ![微信号:guosisoft](http://doc.rdiframework.net/weixin.png)
正文到此结束
本文标签:
.NET
微信开发
挨踢业界
Web前端
常用工具
版权声明:
本站原创文章,由
guosisoft.com
发布,遵循
CC 4.0 by-sa
版权协议,转载请附上原文出处链接和本声明。
上一篇
微信公众号开发C#系列-9、多公众号集中管理
下一篇
微信公众号开发C#系列-11、生成带参数二维码应用场景
热门推荐
{{article.title}}
热门指数:
浏览({{article.lookCount + 5000}})
相关文章
{{article.title}}
该篇文章的评论功能暂时被站长关闭
说给你听
本文目录
文章标签
RDIF.NET
其他
微信开发
.NET
消息交互
.NetCore
项目管理
常用工具
工作流
Web前端
数据库
挨踢业界
随机文章
RDIFramework.NET平台代码生成器V3.1.6125.27586全新发布-更新于20161029(提供下载)
解放双手,markdown文章神器,Typora+PicGo+七牛云图床实现自动上传图片
RDIFramework.NET ━ .NET快速信息化系统开发框架钜献 V2.9 版本震撼发布
.NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)
信息系统项目管理系列之二:项目生命期和组织
RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用
RDIFramework.NET V3.2->新增模块管理界面导出功能(可按条件导出)
RDIFramework.NET敏捷开发框架WinForm新增通用附件管理控件
git用.gitignore忽略指定文件
信息系统项目管理系列之七:项目时间管理
RDIFramework.NET V3.2->Web版本新增新的角色授权管理界面效率更高、更规范
【长文】带你搞明白Redis
再上数据分页控件(不用存储过程)
信息系统项目管理系列之六:项目范围管理
Quartz.Net实现作业定时调度详解
团队项目开发"编码规范"系列文章
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2版本 正式发布
RDIFramework.NET CS敏捷开发框架 V6.0发布(支持.NET6+、Framework双引擎可选,全网唯一)
如何做好正式交付使用前的项目演示
RDIFramework.NET Web版报表管理-助力企业高效智能图表
网站信息
文章总数:599 篇
标签总数:8 个
分类总数:8 个
留言数量:1385 条
在线人数:
89
人
运行天数:1321天
最后更新:2023-05-18
QQ:406590790
13005007127