使用新浪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这个库来模拟登录还有发送微博. 先上效果图: 这个是刚登陆上获取第一页的信息. ...
随机推荐
- JMeter Bean Shell
1.什么是bean Shell BeanShell是一种脚本语言,一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法,beanShell是一种松散类型的脚本语言(这点和JS类似 ...
- renturn 错误
package ui.cfg; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton ...
- 渗透测试工具实战技巧 (转载freebuf)
最好的 NMAP 扫描策略 # 适用所有大小网络最好的 nmap 扫描策略 # 主机发现,生成存活主机列表 $ nmap -sn -T4 -oG Discovery.gnmap 192.168.56. ...
- Flink学习笔记:Operators之Process Function
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- 怎样将结构完全一样的两个表的内容合并到一个表中,SQL语句
标签: SQL合并数据 2013-08-21 10:41 489人阅读 评论(0) 收藏 举报 分类: Oracle数据库(14) select * into 新表名 from (select ...
- 三元运算符,i++(先用后加) ++i (先加后用)区别
三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”.使用这个算法可以使调用数据时逐级筛选. 表达式:“()? :”. ()中进行二元运算 ?在运算,就形成三元运算符 i ...
- yalinqo 的使用...
from($this->getInfo())->where('$v["is_enable"]==1')->where(function (&$v) use ...
- C++_类入门2-使用类
进一步探讨类的特征,重点是类设计技术,而不是通用原理.一些特性很容易,一些特性很微妙. 运算符重载 目的是使C++操作更美观,更接近于内置类型的操作. 隐藏了内部的实现机理,并强调了实质. 格式:op ...
- fluent中UDF环境变量问题的三种解决方法
方法一: 这种方式最简便,首选这种,但是有时会因为不明原因而不好使,我自己电脑刚开始用这种方式是行得通的,但是后来中途装过很多乱七八糟的软件,估计环境变量改乱了,这时候只能用第二种或者第三种方法.先说 ...
- ssm框架的搭建流程
1.新建一个Maven project (1)选中create a simple project,自动配置必要的文件 (2)Packaging选择war类型.jar和war的区别就是一个是普通的jav ...