微信公眾號(hào)開發(fā)C#系列-10、長(zhǎng)鏈接轉(zhuǎn)短鏈接

1、概述
短網(wǎng)址的好處眾多,便于記憶,占用字符少等,現(xiàn)在市面上出現(xiàn)了眾多的將長(zhǎng)網(wǎng)址轉(zhuǎn)變?yōu)槎叹W(wǎng)址的方法,但是由于他們都是小的公司在幕后運(yùn)營(yíng),所以很不靠譜,面對(duì)隨時(shí)關(guān)閉服務(wù)的可能,這樣也導(dǎo)致我們將轉(zhuǎn)換好了的短網(wǎng)址也會(huì)失效失鏈!那么怎樣才能使轉(zhuǎn)換好了的短網(wǎng)址永久有效呢?
2、利用微信公眾號(hào)接口實(shí)現(xiàn)長(zhǎng)鏈接轉(zhuǎn)短鏈接
開發(fā)者用于生成二維碼的原鏈接(商品、支付二維碼等)太長(zhǎng)導(dǎo)致掃碼速度和成功率下降,將原長(zhǎng)鏈接通過(guò)此接口轉(zhuǎn)成短鏈接再生成二維碼將大大提升掃碼速度和成功率。微信公眾號(hào)平臺(tái)提供的長(zhǎng)鏈接轉(zhuǎn)短鏈接接口是:
http請(qǐng)求方式: POST
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN
參數(shù)說(shuō)明
| 參數(shù) | 是否必須 | 說(shuō)明 |
|---|---|---|
| access_token | 是 | 調(diào)用接口憑證 |
| action | 是 | 此處填long2short,代表長(zhǎng)鏈接轉(zhuǎn)短鏈接 |
| long_url | 是 | 需要轉(zhuǎn)換的長(zhǎng)鏈接,支持http://、https://、weixin://wxpay 格式的url |
調(diào)用舉例
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"
返回說(shuō)明,正常情況下,微信會(huì)返回下述JSON數(shù)據(jù)包給公眾號(hào):
{"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"}
代碼參考
/// <summary>
/// 長(zhǎng)鏈接轉(zhuǎn)短鏈接
/// </summary>
/// <param name="longUrl">長(zhǎng)鏈接</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;
//微信請(qǐng)求地址
string url = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=" + token;
//請(qǐng)求的json參數(shù)
string data = "{\"action\":\"long2short\",\"long_url\":\"" + longUrl + "\"}";
string ret = string.Empty;
try
{
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(data); //轉(zhuǎn)化
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);//寫入?yún)?shù)
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)
{
}
//正常情況下,微信會(huì)返回下述JSON數(shù)據(jù)包給公眾號(hào):
//{"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"}
string errcode = "";//錯(cuò)誤碼。
string errmsg = "";//錯(cuò)誤信息。
string short_url = "";//短鏈接。
//解析響應(yīng)信息
if (!string.IsNullOrWhiteSpace(ret))
{
JObject jo = (JObject)JsonConvert.DeserializeObject(ret);
errcode = jo["errcode"].ToString();//錯(cuò)誤碼。
errmsg = jo["errmsg"].ToString();//錯(cuò)誤信息。
short_url = jo["short_url"].ToString();//短鏈接。
}
return Content(new JsonMessage { Success = true, Data = short_url, Type = ResultType.Success, Message = errmsg }.ToString());
}
3、使用效果參考##


上面的界面我們把鏈接地址http://blog.rdiframework.net/article/190通過(guò)我們提供的長(zhǎng)鏈接轉(zhuǎn)短鏈接界面功能轉(zhuǎn)成了短鏈接https://w.url.cn/s/ALO1xZC。
參考文章
Senparc.Weixin SDK + 官網(wǎng)示例源代碼
RDIFramework.NET — 基于.NET的快速信息化系統(tǒng)開發(fā)框架 — 系列目錄
RDIFramework.NET ━ .NET快速信息化系統(tǒng)開發(fā)框架 ━ 工作流程組件介紹
RDIFramework.NET框架SOA解決方案(集Windows服務(wù)、WinForm形式與IIS形式發(fā)布)-分布式應(yīng)用
RDIFramework.NET代碼生成器全新V3.5版本發(fā)布-重大升級(jí)
一路走來(lái)數(shù)個(gè)年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過(guò)下面的地址了解詳情。
RDIFramework.NET官方網(wǎng)站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
同時(shí)需要說(shuō)明的,以后的所有技術(shù)文章以官方網(wǎng)站為準(zhǔn),歡迎大家收藏!
RDIFramework.NET框架由專業(yè)團(tuán)隊(duì)長(zhǎng)期打造、一直在更新、一直在升級(jí),請(qǐng)放心使用!
歡迎關(guān)注RDIFramework.net框架官方公眾微信(微信號(hào):guosisoft),及時(shí)了解最新動(dòng)態(tài)。
掃描二維碼立即關(guān)注

作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號(hào))
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國(guó)思RDIF開發(fā)框架
,
給用戶和開發(fā)者最佳的.Net框架平臺(tái)方案,為企業(yè)快速構(gòu)建跨平臺(tái)、企業(yè)級(jí)的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺(tái)項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開發(fā)與管理經(jīng)驗(yàn),曾多次組織并開發(fā)多個(gè)大型項(xiàng)目,在面向?qū)ο蟆⒚嫦蚍?wù)以及數(shù)據(jù)庫(kù)領(lǐng)域有一定的造詣。現(xiàn)主要從事基于
RDIF
框架的技術(shù)開發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問(wèn)題或建議,請(qǐng)多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,如有問(wèn)題,可以通過(guò)微信、郵箱、QQ等聯(lián)系我,非常感謝。

短網(wǎng)址的好處眾多,便于記憶,占用字符少等,現(xiàn)在市面上出現(xiàn)了眾多的將長(zhǎng)網(wǎng)址轉(zhuǎn)變?yōu)槎叹W(wǎng)址的方法,但是由于他們都是小的公司在幕后運(yùn)營(yíng),所以很不靠譜,面對(duì)隨時(shí)關(guān)閉服務(wù)的可能,這樣也導(dǎo)致我們將轉(zhuǎn)換好了的短網(wǎng)址也會(huì)失效失鏈!那么怎樣才能使轉(zhuǎn)換好了的短網(wǎng)址永久有效呢?
浙公網(wǎng)安備 33010602011771號(hào)