首页 新闻 会员 周边

C# 获取短链接为什么都会自动移除&后面的参数?

0
悬赏园豆:50 [已解决问题] 解决于 2015-09-08 16:56

比如我输入的短链接是 

http://wx.smartoct.com/News/GuessNews?ImageTextID=b9e669ba-adaf-4fd2-930a-502e66633685&User_ID=622a17d7-355a-4d59-af18-416c3bfba132

 

调用百度api后返回的结果就是

{"tinyurl":"http:\/\/dwz.cn\/1FakzE","status":0,"longurl":"http://wx.smartoct.com/News/GuessNews?ImageTextID=b9e669ba-adaf-4fd2-930a-502e66633685","err_msg":""}

 

调用sina的之后结果也是

​[{"url_short":"http://t.cn/RyLFTSW","url_long":"http://wx.smartoct.com/News/GuessNews?ImageTextID=b9e669ba-adaf-4fd2-930a-502e66633685","type":0}]

 

都移除了&后面的参数,不知道这是为什么

这里详细给出sinaapi的写法,供大神测试

public class GetShortUrl
{
public static string GetSina(string urlLong)
{
var result = "";
try
{
string url = "http://api.t.sina.com.cn/short_url/shorten.json?source=1681459862&url_long=" + urlLong;
string jsonstring = NetworkHelper.SendRequest(url);
if (jsonstring.Contains("url_short"))
{
result =
JsonConvert.DeserializeObject<System.Collections.Generic.List<SinaShortUrl>>(
jsonstring.Replace("\r\n", ""))[0].url_short;
}
}
catch (Exception)
{

}
return result;
}
}

 

public static class NetworkHelper
{
/// <summary>
/// 向服务器发送请求并返回请求结果
/// </summary>
/// <param name="url">请求url</param>
/// <returns>返回Response结果</returns>
public static string SendRequest(string url)
{
string data = string.Empty;
WebRequest wreq = null;
WebResponse wrep = null;
Stream stream = null;
StreamReader reader = null;
try
{
wreq = WebRequest.Create(url);
wrep = wreq.GetResponse();
stream = wrep.GetResponseStream();
reader = new StreamReader(stream, System.Text.Encoding.UTF8);
data = reader.ReadToEnd();
}
catch (Exception)
{
//throw;
}
finally
{
if (reader != null) reader.Dispose();
if (stream != null) stream.Dispose();
if (wrep != null) wrep.Dispose();
if (wreq != null) wreq.Abort();
}
return data;
}

}

 

 

给我一个理由的主页 给我一个理由 | 初学一级 | 园豆:17
提问于:2015-09-06 14:28
< >
分享
最佳答案
0

看了下文档 http://open.weibo.com/wiki/Short_url/shorten

尼玛才发现,这个&参数被系统占用了

但是难道我的源地址就不能使用&来传递两个参数了,别告诉我合并成一个参数,尼玛系统内部改的工作量不是我等能想象的,这个坑难道就没有前人想过怎么预防的吗????????

给我一个理由 | 初学一级 |园豆:17 | 2015-09-06 15:14
其他回答(2)
0

因为参数也是url的一部分.如果不把参数也包括到里面去,短连接就没什么用了.因为参数的长度是不确定的.有可能转换后还是很长

收获园豆:50
吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-06 14:34

我的意思是打开短链接之后,浏览器不是会解析成长链接吗?但是解析的这个长链接与我最开始输入的对比,少了&后面的参数

麻烦仔细看,也可能我描述的不够细

支持(0) 反对(0) 给我一个理由 | 园豆:17 (初学一级) | 2015-09-06 14:38

@给我一个理由: 哦.这样啊,已经就是输入短连接的时候跳转到的目标页面光之后地址.没有Querystring吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-06 14:42

@吴瑞祥: 对啊

你点击这个链接 http://t.cn/RyLFTSW 得到结果是

http://wx.smartoct.com/News/GuessNews?ImageTextID=b9e669ba-adaf-4fd2-930a-502e66633685

得到的url和之前输入的(http://wx.smartoct.com/News/GuessNews?ImageTextID=b9e669ba-adaf-4fd2-930a-502e66633685&User_ID=622a17d7-355a-4d59-af18-416c3bfba132)

对比就是少了&后面的参数

支持(0) 反对(0) 给我一个理由 | 园豆:17 (初学一级) | 2015-09-06 14:47

@给我一个理由: http://www.surl.sinaapp.com/

不会啊,我用这个工具生成的https://www.baidu.com/?a=1&b=2->http://t.cn/zOfrcho进去之后还是有2个参数a-b啊

支持(1) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-06 14:54
0

这个你需要和新浪那边联系解决了。那边肯定得解决这个问题,不然怎么搞、?

冲杀 | 园豆:230 (菜鸟二级) | 2015-09-08 17:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册