使用新浪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 > )
{
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生成短连接的更多相关文章
- PHP调用新浪API 生成短链接
我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ...
- php调用新浪API生成t.cn短网址链接
新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx 这种格式的短链接. API: http://api.t.sina.com.cn/short_url/shorten.json ( ...
- 如何利用新浪官方的短网址API接口实现T.cn短链接的压缩生成
短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问.目前国内最稳定最好用的是新浪T.cn短链接. 之前新浪提供了 ...
- 淘宝(新浪)API获取IP地址位置信息
package com.parse; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IO ...
- Python如何调用新浪api接口的问题
前言:这些天在研究如何调用新浪开放平台的api分析新浪微博用户的数据 成果:成功调用了新浪api获取了用户的一些个人信息和无数条公共微博 不足:新浪开放平台访问有限制,返回的数据着实有限,不足以分析问 ...
- PHP生成短连接的方法
PHP生成短连接的方法.md PHP生成短连接的方法 直接贴上方法,函数可以查看手册. <?php /** 生成短网址 * @param String $url 原网址 * @return St ...
- PHP调用百度api生成短网址&根据短网址恢复长网址
接口api文档地址:http://dwz.cn/#/apidoc?_k=i9ev5p 代码demo header("Content-type: text/html; charset=utf- ...
- 新浪微博API生成短链接
通过新浪微博API,生成短链接,支持一次性转多个长链接 什么是短链接 短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串. 短链接服务 国内各大微博都推出了自己的短链接 ...
- 使用JAVA实现模拟登陆并发送新浪微博(非调用新浪API)
没有调用新浪的API,在程序中加入自己的帐号和密码就能发送微博,代码完全在后台运行,不用打开浏览器. 用了HtmlUnit这个库来模拟登录还有发送微博. 先上效果图: 这个是刚登陆上获取第一页的信息. ...
随机推荐
- 类与类之间的两种关系------新标准c++程序设计
在c++中,类和类之间有两种基本关系:复合关系和继承关系. 复合关系也称为“has a”关系或“有”的关系,表现为封闭类,即一个类以另一个类的对象作为成员变量. 继承关系也称为“is a”关系或“是” ...
- [转]解读Unity中的CG编写Shader系列1——初识CG
CG=C for Graphics 用于计算机图形编程的C语言超集 前提知识点: 1.CG代码必须用 CGPROGRAM ... ENDCG括起来 2.顶点着色器与片段着色器的主函数名称可随意,但需 ...
- 历届试题 小数第n位
问题描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数. 如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式. 本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始 ...
- mybatis 学习笔记(二):mybatis SQL注入问题
mybatis 学习笔记(二):mybatis SQL注入问题 SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞. ...
- java集合类学习笔记之ArrayList
1.简述 ArrayList底层的实现是使用了数组保存所有的数据,所有的操作本质上是对数组的操作,每一个ArrayList实例都有一个默认的容量(数组的大小,默认是10),随着 对ArrayList不 ...
- 如何用python批量翻译文本?
首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...
- 在请求中存取属性setAttribute&getAttribute方法
在请求中保存属性: public void setAttribute(String name,Object o) request.setAttribute("mess"," ...
- 创建Oracle synonym 详解
--创建使用同义词 --同义词就是给表.视图等对象取得别名,用于简化对其的访问 --分为2种: --私有同义词:用户自己创建自己使用的 --公共同义词:dba创建,给其它用户使用的 --为dept_s ...
- 洛谷 P2096 最佳旅游线路
某旅游区的街道成网格状.其中东西向的街道都是旅游街,南北向的街道都是林阴道.由于游客众多,旅游街被规定为单行道,游客在旅游街上只能从西向东走,在林阴道上则既可从南向北走,也可以从北向南走. 阿龙想到这 ...
- php中的openssl开启方法
windows下开启方法: 1: 首先检查php.ini中:extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘:', 如果不存在这行,那么添加extensio ...