博客开发手记1 – 不能发布URL长度超过280字符微博的解决方案(C#实现)
2010-12-24 14:20
691 查看
开发微博PPC客户端时发现,不能发布URL长度超过280字符的微博(网页端也有此问题),例如发布一个淘宝商品图片:URL http://www.taobao.com/view_image.php?pic=Wx0GGlFDXA1VUwMFWx0SCwkNGRFcVxxQW1UcCxMFRBkDCFdVV1cRRhpTRDhHQghddWtdVEAxKgtSA0MHZ2sDBUBfRlJFBgYV&title=zeLDs8zYvNvP5LD8ILH2usBCSU5IQU%2FV%2Fca3IMLD0NDP5C%2B1x7v6z%2BQvzdDUy8%2FkL8CtuMvP5DI0tOc%3D&version=2&c=OTgzMDkyZWY2Njk3MjI4ZmI2ZGUzMjdlYTkyODEyOTI%3D&itemId=85a8fa3ca3d4933e7e6d57714c28105a&dbId=db1&fv=9。
直接将此URL输入到信息框,将提示信息超出长度,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/18/26720ce007a7db213feb757969b454bf.gif)
WeGo(微博PPC客户端)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/18/443114e74b9e06dcfbc319b9d7b7f210.gif)
新浪微博网页端
使用WeGo的URL短地址编辑器即可实现发布此微博,具体操作如下:
1.进入短地址编辑界面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/6767a8218c0f9339fa78276b06dc2569.gif)
2.输入要缩短的URL,点击"确定"
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/54af8478ace663cdb94d1a1ea13df4d4.gif)
3.生成短地址,发布微博
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/0df7d72dc1e79607488920c44ffa32c3.gif)
具体解决方案如下:
使用ShortText.com 或 TinyURL.com等短地址生成网站的API生成短地址,然后使用短地址发布微博。
本文以ShortText.com API为例,使用C#实现,具体实现如下:
public class ShortTextURL
{
private const string APIURL = "http://shortText.com/api.aspx";
public string GetShortenedText(string inputText)
{
string data = "shorttext=" + HttpUtility.UrlEncode(inputText);
const int trimLength = 5;
string shortenURL = ExecutePostCommand(APIURL, data);
if (!string.IsNullOrEmpty(shortenURL))
{
string newText =
inputText.Substring(0, inputText.LastIndexOf(" ", 140 - (shortenURL.Length + trimLength))) + " " +
shortenURL;
return newText;
}
return inputText;
}
private static string ExecutePostCommand(string url, string data)
{
var request = CreateHttpRequest(new Uri(url));
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Timeout = 20000;
byte[] bytes = Encoding.UTF8.GetBytes(data);
request.ContentLength = bytes.Length;
try
{
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Flush();
}
}
catch (Exception)
{
}
try
{
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
}
catch (WebException ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return null;
}
}
直接将此URL输入到信息框,将提示信息超出长度,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/18/26720ce007a7db213feb757969b454bf.gif)
WeGo(微博PPC客户端)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/18/443114e74b9e06dcfbc319b9d7b7f210.gif)
新浪微博网页端
使用WeGo的URL短地址编辑器即可实现发布此微博,具体操作如下:
1.进入短地址编辑界面
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/6767a8218c0f9339fa78276b06dc2569.gif)
2.输入要缩短的URL,点击"确定"
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/54af8478ace663cdb94d1a1ea13df4d4.gif)
3.生成短地址,发布微博
![](https://oscdn.geek-share.com/Uploads/Images/Content/201012/24/0df7d72dc1e79607488920c44ffa32c3.gif)
具体解决方案如下:
使用ShortText.com 或 TinyURL.com等短地址生成网站的API生成短地址,然后使用短地址发布微博。
本文以ShortText.com API为例,使用C#实现,具体实现如下:
public class ShortTextURL
{
private const string APIURL = "http://shortText.com/api.aspx";
public string GetShortenedText(string inputText)
{
string data = "shorttext=" + HttpUtility.UrlEncode(inputText);
const int trimLength = 5;
string shortenURL = ExecutePostCommand(APIURL, data);
if (!string.IsNullOrEmpty(shortenURL))
{
string newText =
inputText.Substring(0, inputText.LastIndexOf(" ", 140 - (shortenURL.Length + trimLength))) + " " +
shortenURL;
return newText;
}
return inputText;
}
private static string ExecutePostCommand(string url, string data)
{
var request = CreateHttpRequest(new Uri(url));
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Timeout = 20000;
byte[] bytes = Encoding.UTF8.GetBytes(data);
request.ContentLength = bytes.Length;
try
{
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Flush();
}
}
catch (Exception)
{
}
try
{
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
}
catch (WebException ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return null;
}
}
相关文章推荐
- "路径和文件名总长度必须不能超过 260 个字符! 系统找不到指定的路径"的解决方法
- 动态SQL字符长度超过8000【SQL SERVER 2005之完美解决方案】
- 一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成.请用c#语言编写主要程序来实现
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- MQTT 协议 Client ID 长度不能超过23个字符(MqttException: MQIsdp ClientId > 23 bytes)
- iPhone开发-实现类似微博那样在敲入“@”字符之后加入自动提示功能
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- C#实现类似新浪微博长URL转短地址的方法
- C#路径超过260字符解决方案
- winrar解压spring出现“路径和文件名总长度必须不能超过 260 个字符!”错误的解决方法
- C# 长度超过248字符的路径或文件的查找
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- winrar解压spring出现“路径和文件名总长度必须不能超过 260 个字符!”错误的解决方法
- js实现超过长度的字符截取指定长度(中文字符算2个字符),超出部分以...显示
- js的参数有长度限制吗?发现不能超过2083个字符
- C# 中如何实现TextBox控件只能输入数字,而不能是其他字符
- js的参数有长度限制吗?发现不能超过2083个字符
- C#实现越过CSDN博客中不能使用CSS的style标签功能
- 如何用正则表达式实现规定用户输入密码的格式为:(长度6到18个字符,不能全为重复字母,或者连续字母)