zoukankan      html  css  js  c++  java
  • 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到浏览器访问,直接就可以访问了。

  • 相关阅读:
    hdu1290献给杭电五十周年校庆的礼物
    hdu1181(变形课)
    Flex结合java实现一个登录功能
    MyEclipse安装spket插件
    线程安全的理解
    很实用的一个ext表格,具有很好的分页功能。
    tomcat配置数据源
    extanychart柱状图呈现取自数据库中的数据
    extanychart饼图呈现取自数据库中的数据
    oracle实现分页总结
  • 原文地址:https://www.cnblogs.com/choii/p/11942693.html
Copyright © 2011-2022 走看看