c#使用百度短链接接口将长链接生成短连接

最近有个业务是向客户发送带短链接的短信提示。 

记得以前有写过短链接的demo,然后拿过来用发现,新浪的短链接已经关闭了,市面上已经没有免费的短链接服务端。

最后公司买了百度的服务,接口文档如下:

 注意到了吗?没有C#调用接口的demo。真他妈的气炸了,鄙视这家公司。

既然没有demo,那就自己写一个吧,反正就是post调用接口。

1、第一个当然是去注册个账号拿到百度的授权token啦,这个就不掩饰了,注册一下就有了。

2、新建一个短连接mvc demo。名字随便起。

3、先编写一个http请求公用函数,基本上是个框架都有公共请求类吧,拉一个出来。文档上面要求了一个method是post,content-type是json,header需要一个token。直接修改一下,上函数代码:

 //调用
        public static string PostWebRequest(string url, string token, string data)
        {
            string ret = string.Empty;
            try
            {
                WebRequest webReq = WebRequest.Create(url);
                webReq.Method = "POST";
                webReq.ContentType = "application/json;charset=utf-8";// "application /x-www-form-urlencoded"
                webReq.Headers.Add("Token", token);

                using (var newStream = new StreamWriter(webReq.GetRequestStream()))
                {
                    newStream.Write(data);//写入参数
                    newStream.Flush();
                }

                using (var response = webReq.GetResponse())
                {
                    StreamReader sr = new StreamReader(response.GetResponseStream());
                    ret = sr.ReadToEnd();
                    sr.Close();
                }

            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            return ret;
        }

4、根据响应结果文档新增一个结果接收类

 public class HttpResult
    {
        /// <summary>
        /// 0:正常返回短网址
        ///-1:短网址生成失败
        ///-2:长网址不合法
        ///-3:长网址存在安全隐患
        ///-4:内部错误
        ///-5:短网址服务目前不支持该域名
        ///-6:有效期设置错误
        ///-1xx:Token验证失败
        /// </summary>
        public string  Code { get; set; }
        public string ShortUrl { get; set; }

        public string LongUrl { get; set; }

        public string ErrMsg { get; set; }

        public string IsNew { get; set; }

    }

4、由于传输用的json,所以data的格式一定要json格式。在home的index action中加入调用代码,把token改成自己在百度中获取的token

 string requrl = "https://dwz.cn/admin/v2/create";
            string url ="https://www.baidu.com";
            string param = "{\"Url\":\"" + url + "\"}";
            string result= HttpRequest.PostWebRequest(requrl,token, param);
            HttpResult returnResult = Newtonsoft.Json.JsonConvert.DeserializeObject<HttpResult>(result);
            return View(returnResult);
<div class="row">
    <div>
        ShortCode:@Model.Code
    </div>
    <div>
        ShortUrl:@Model.ShortUrl
    </div>
    <div>
        LongUrl:@Model.LongUrl
    </div>
    <div>
        ErrMsg:@Model.ErrMsg
    </div>
</div>

如果需要加入短连接有效期,就在param继续拼接,TermOfValidity:

  • "long-term":长期,默认值
  • "1-year":1年

文档还是简单易懂的。

最后执行效果如下:

复制shorturl到浏览器访问,直接就可以访问了。

猜你喜欢

转载自www.cnblogs.com/choii/p/11942693.html