公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量。因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接。因为公司本身没有短的一级域名,所以考虑到使用第三方的短连接生成器。经过对比选择了新浪短连接生成器。

新浪接口文档地址: 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 > )
{
return urls[].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 > )
{
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"]的值进行判断。

使用新浪API生成短连接的更多相关文章

  1. PHP调用新浪API 生成短链接

    我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...

  2. php调用新浪API生成t.cn短网址链接

    新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx 这种格式的短链接. API: http://api.t.sina.com.cn/short_url/shorten.json ( ...

  3. 如何利用新浪官方的短网址API接口实现T.cn短链接的压缩生成

    短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问.目前国内最稳定最好用的是新浪T.cn短链接. 之前新浪提供了 ...

  4. 淘宝(新浪)API获取IP地址位置信息

    package com.parse; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IO ...

  5. Python如何调用新浪api接口的问题

    前言:这些天在研究如何调用新浪开放平台的api分析新浪微博用户的数据 成果:成功调用了新浪api获取了用户的一些个人信息和无数条公共微博 不足:新浪开放平台访问有限制,返回的数据着实有限,不足以分析问 ...

  6. PHP生成短连接的方法

    PHP生成短连接的方法.md PHP生成短连接的方法 直接贴上方法,函数可以查看手册. <?php /** 生成短网址 * @param String $url 原网址 * @return St ...

  7. PHP调用百度api生成短网址&根据短网址恢复长网址

    接口api文档地址:http://dwz.cn/#/apidoc?_k=i9ev5p 代码demo header("Content-type: text/html; charset=utf- ...

  8. 新浪微博API生成短链接

    通过新浪微博API,生成短链接,支持一次性转多个长链接 什么是短链接 短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串. 短链接服务 国内各大微博都推出了自己的短链接 ...

  9. 使用JAVA实现模拟登陆并发送新浪微博(非调用新浪API)

    没有调用新浪的API,在程序中加入自己的帐号和密码就能发送微博,代码完全在后台运行,不用打开浏览器. 用了HtmlUnit这个库来模拟登录还有发送微博. 先上效果图: 这个是刚登陆上获取第一页的信息. ...

随机推荐

  1. 1222: FJ的字符串 [水题]

    1222: FJ的字符串 [水题] 时间限制: 1 Sec 内存限制: 128 MB 提交: 92 解决: 20 统计 题目描述 FJ在沙盘上写了这样一些字符串: A1  =  “A” A2  =   ...

  2. javascript立即执行函数与模块化

    概念:立即执行函数顾名思义就是函数定义好之后立即执行.函数表达式方式:函数表达式后面加括号()即可立即执行函数. var xmlhttpUtil = function () { function ge ...

  3. 杀死进程命令 kill

    一般kill命令和ps命令结合使用, 例:现在想杀死telnet的进程 1.在所有进程中查看telnet命令 ps -ef |grep telnet 2.根据上面命令查到的进程id,如pid 是 xx ...

  4. 【重要的css属性学习】看了乙醇的文章,统计了几个高star前端框架下,Css属性出现最多的,这里学习记录一下

    color background-color display margin-left border-color padding max-width margin-bottom width flex 待 ...

  5. undefined reference to symbol ‘_ZN2cv6String10deallocateEv

    使用qt编译Caffe时出现如下错误: undefined reference to symbol '_ZN2cv6String10deallocateEv' error adding symbols ...

  6. ELK (Elasticsearch , Logstash, Kibana [+FileBeat])

    ELK 简述: ELK 是: Elasticsearch , Logstash, Kibana 简称, 它们都是开源软件. Elasticsearch[搜索]是个开源分布式基于Lucene的搜索引擎, ...

  7. springcloud微服务总结四 负载均衡

    一:Ribbon简介 Ribbon是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为 ...

  8. 安装使用Redis过程中可能出现的错误收集

    1.使用make test测试编译状态报错 cd src && make test make[1]: Entering directory `/usr/local/redis-3.2. ...

  9. .Net Core 使用swagger UI

    swagger UI 第一步:首先添加包Swashbuckle.AspNetCore (可通过微软添加包命令Install-Package 包名进行添加,也可以通过管理NuGet程序包进行添加) 第二 ...

  10. Android 应用资源及R文件的位置

    1.介绍 (1)常识 (2)在res目录下新建资源文件(例如数字资源) app--->res,选择res,右击new--->value resource file 2.字符资源(strin ...