使用新浪API生成短連接


  公司最近需要進行短信推廣,需要發送大批量帶有連接地址的短信給用戶,並且需要統計短信的點擊量。因為需要考慮短信成本問題,需要將長連接地址生成比較短的連接。因為公司本身沒有短的一級域名,所以考慮到使用第三方的短連接生成器。經過對比選擇了新浪短連接生成器。

新浪接口文檔地址: http://open.weibo.com/wiki/Short_url/shorten

新浪提供了xml和json兩種格式進行生成短連接,這里使用的是json。

下面是請求的代碼

public class ShortUrlHelper
{
    public class sina_short_url
    {
        public string url_short { get; set; }

        public string url_long { get; set; }
        public int type { get; set; }
    }
    /// <summary>
    /// 新浪轉換短鏈接
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public static string Convert_SINA_Short_Url(string url)
    {
        if (string.IsNullOrWhiteSpace(url))
        {
            return "";
        }
        //api地址
        var address = "http://api.t.sina.com.cn/short_url/shorten.json?source=2815391962";
        address += "&url_long=" + HttpUtility.UrlEncode(url);
        //http請求
        var json = RequestHelper.Request(address);
        //json轉換
        var urls = JsonHelper.Deserialize<List<sina_short_url>>(json);
        if (urls != null && urls.Count > 0)
        {
            return urls[0].url_short;
        }
        return "";
    }
    /// <summary>
    /// 新浪轉換短鏈接-批量
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public static List<sina_short_url> Convert_SINA_Short_Url_ByUrlList(List<string> urlList)
    {
        if (urlList.Count > 20)
        {
            throw new Exception("最大支持20個url轉換");
        }
        var address = "http://api.t.sina.com.cn/short_url/shorten.json?source=2815391962";
        foreach (var url in urlList)
        {
            address += "&url_long=" + HttpUtility.UrlEncode(url);
        }
        var json = RequestHelper.Request(address);
        var urls = JsonHelper.Deserialize<List<sina_short_url>>(json);
        return urls;
    }
}

注意事項:

  因為新浪接口在生成短連接的時候,會在生成同時調用一次連接的情況(在使用過程中也出現過在一段時間后這些短連接被同一系列的IP地址進行訪問)。這樣會影響到接口點擊量統計。需要在連接響應地址上做一定的處理。對比了請求Request發現請求中的User-Agent和正常瀏覽器請求是不一致的。暫時我就是使用Request.Headers["User-Agent"]的值進行判斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM