• 使用新浪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"]的值进行判断。

  • 相关阅读:
    vue 组件之间的通讯方式
    vue 路由4种传参方式
    vue+axios封装已文件流的形式导出文件
    vue 开发环境正常打包之后背景图片无法访问或者element-ui的icon找不到
    vue 优化webpack引入CND
    microtime() — 返回当前 Unix 时间戳和微秒数
    将一个字符串分隔为组成它的字符
    Laravel 伪静态配置
    VSCode
    array_merge()&array_combine()合并数组函数
  • 原文地址:https://www.cnblogs.com/Jimmy-pan/p/5784611.html
Copyright © 2020-2023  润新知