微信公衆號開發C#系列-十、長連接轉短連接

一、概述

短網址的好處衆多,便於記憶,佔用字符少等,如今市面上出現了衆多的將長網址轉變爲短網址的方法,可是因爲他們都是小的公司在幕後運營,因此很不靠譜,面對隨時關閉服務的可能,這樣也致使咱們將轉換好了的短網址也會失效失鏈!那麼怎樣才能使轉換好了的短網址永久有效呢?git

二、利用微信公衆號接口實現長連接轉短連接

開發者用於生成二維碼的原連接(商品、支付二維碼等)太長致使掃碼速度和成功率降低,將原長連接經過此接口轉成短連接再生成二維碼將大大提高掃碼速度和成功率。微信公衆號平臺提供的長連接轉短連接接口是:github

http請求方式: POST
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN

參數說明web

參數 是否必須 說明
access_token 調用接口憑證
action 此處填long2short,表明長連接轉短連接
long_url 須要轉換的長連接,支持http://、https://、weixin://wxpay 格式的url

調用舉例json

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數據包給公衆號:api

{"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());
}

三、使用效果參考

長連接轉短連接界面


生成的短連接效果

上面的界面咱們把連接地址http://blog.rdiframework.net/article/190經過咱們提供的長連接轉短連接界面功能轉成了短連接https://w.url.cn/s/ALO1xZC微信

參考文章

微信公衆平臺技術文檔-官方app

Senparc.Weixin SDK + 官網示例源代碼微信公衆平臺

RDIFramework.NET — 基於.NET的快速信息化系統開發框架 — 系列目錄框架

RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工做流程組件介紹curl

RDIFramework.NET框架SOA解決方案(集Windows服務、WinForm形式與IIS形式發佈)-分佈式應用

RDIFramework.NET代碼生成器全新V3.5版本發佈-重大升級


一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,你們能夠經過下面的地址瞭解詳情。

RDIFramework.NET官方網站:http://www.rdiframework.net/

RDIFramework.NET官方博客:http://blog.rdiframework.net/

同時須要說明的,之後的全部技術文章以官方網站爲準,歡迎你們收藏!

RDIFramework.NET框架由專業團隊長期打造、一直在更新、一直在升級,請放心使用!

歡迎關注RDIFramework.net框架官方公衆微信(微信號:guosisoft),及時瞭解最新動態。

掃描二維碼當即關注
微信號:guosisoft

相關文章
相關標籤/搜索