c#调用百度短网址api

woodyy 2015-02-26 11:47:31

byte[] postData = Encoding.UTF8.GetBytes("url=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET");
// byte[] postData = Encoding.UTF8.GetBytes("longurl=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET");
var url = "http://dwz.cn/create.php";
var client = new WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.UploadData(url, "POST", postData);
byte[] responseData = client.UploadData(url, "POST", postData);
var r = Encoding.UTF8.GetString(responseData);


最后的r = ‘{"status":-1,"err_msg":"网址不能为空","longurl":""}’

...全文
1124 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
海宏AA 2018-08-16
  • 打赏
  • 举报
回复
引用 17 楼 gssystems 的回复:
public class baiduShortUrl
{ //{"status":0,"tinyurl":"http://dwz.cn/Kod9pTgc","longurl":"http://localhost:7419/PingJia/PingjiaEdit.aspx?sID=SF201806110002","err_msg":""}
public int status = -1;
public string err_msg = "";
public string tinyurl = "";
public string longurl = "";
/// <summary>
/// 短网址
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static baiduShortUrl getShortUrl(string url)
{
int n = url.IndexOf('?');
string s = url, s2 = "", rs = "";
if (n > 0)
{ //带参数的处理一下
s = url.Substring(0, n + 1);
s2 = url.Substring(n + 1);
s2 = Uri.EscapeDataString(s2);
s += s2;
}
var creater = "http://dwz.cn/create.php";
var data = "url=" + s; //url,longurl
var client = new System.Net.WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
rs = client.UploadString(creater, "POST", data);
//using (iPublic.iHttpPost poster = new iHttpPost())
//{
// poster.SetFieldValue("url", s);
// poster.Upload(creater, out rs);
//}
//转换
baiduShortUrl bs = JsonConvert.DeserializeObject<baiduShortUrl>(rs);
return bs;
}
public static string getShortUrlStr(string url)
{
baiduShortUrl bs = getShortUrl(url);
if (bs == null || bs.status != 0) return "";
return bs.tinyurl;
}
}
我这个经常报错:unsafe url
海宏AA 2018-08-16
  • 打赏
  • 举报
回复
public class baiduShortUrl
{ //{"status":0,"tinyurl":"http://dwz.cn/Kod9pTgc","longurl":"http://localhost:7419/PingJia/PingjiaEdit.aspx?sID=SF201806110002","err_msg":""}
public int status = -1;
public string err_msg = "";
public string tinyurl = "";
public string longurl = "";
/// <summary>
/// 短网址
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static baiduShortUrl getShortUrl(string url)
{
int n = url.IndexOf('?');
string s = url, s2 = "", rs = "";
if (n > 0)
{ //带参数的处理一下
s = url.Substring(0, n + 1);
s2 = url.Substring(n + 1);
s2 = Uri.EscapeDataString(s2);
s += s2;
}
var creater = "http://dwz.cn/create.php";
var data = "url=" + s; //url,longurl
var client = new System.Net.WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
rs = client.UploadString(creater, "POST", data);
//using (iPublic.iHttpPost poster = new iHttpPost())
//{
// poster.SetFieldValue("url", s);
// poster.Upload(creater, out rs);
//}
//转换
baiduShortUrl bs = JsonConvert.DeserializeObject<baiduShortUrl>(rs);
return bs;
}
public static string getShortUrlStr(string url)
{
baiduShortUrl bs = getShortUrl(url);
if (bs == null || bs.status != 0) return "";
return bs.tinyurl;
}
}
海宏AA 2018-08-15
  • 打赏
  • 举报
回复
我这报错:unsafe url。不知道怎么搞得。代码如下:
public class baiduShortUrl
{ //{"status":0,"tinyurl":"http://dwz.cn/Kod9pTgc","longurl":"http://localhost:7419/PingJia/PingjiaEdit.aspx?sID=SF201806110002","err_msg":""}
public int status = -1;
public string err_msg = "";
public string tinyurl = "";
public string longurl = "";
/// <summary>
/// 短网址
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static baiduShortUrl getShortUrl(string url)
{
int n = url.IndexOf('?');
string s = url, s2 = "", rs = "";
if (n > 0)
{ //带参数的处理一下
s = url.Substring(0, n + 1);
s2 = url.Substring(n + 1);
s2 = Uri.EscapeDataString(s2);
s += s2;
}
var creater = "http://dwz.cn/create.php";
var data = "url=" + s; //url,longurl
var client = new System.Net.WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
rs = client.UploadString(creater, "POST", data);
//using (iPublic.iHttpPost poster = new iHttpPost())
//{
// poster.SetFieldValue("url", s);
// poster.Upload(creater, out rs);
//}
//转换
baiduShortUrl bs = JsonConvert.DeserializeObject<baiduShortUrl>(rs);
return bs;
}
public static string getShortUrlStr(string url)
{
baiduShortUrl bs = getShortUrl(url);
if (bs == null || bs.status != 0) return "";
return bs.tinyurl;
}
}
範先森 2016-04-14
  • 打赏
  • 举报
回复
没用过这个东西,但是代码里面好像有点问题,不知道对不对。 client.UploadData(url, "POST", postData); byte[] responseData = client.UploadData(url, "POST", postData); 这两句是不是重复了
a863922230 2016-04-13
  • 打赏
  • 举报
回复
直接用ajax调用,多方便啊,不用后台代码就可以了。
hisnowman 2016-04-12
  • 打赏
  • 举报
回复
我来回答一下吧,这样处理就对了

url="http://bbs.csdn.net/topics/new?"+Uri.EscapeDataString("forum_id=ASPDotNET&bbb=test");
wg5945 2015-10-09
  • 打赏
  • 举报
回复
编码一下吧 Uri.EscapeUriString
zixiaosy 2015-10-09
  • 打赏
  • 举报
回复
对啊 当URL多参数时就会截断生成短网址 求教?? 如何解决这个问题
团团美 2015-08-27
  • 打赏
  • 举报
回复
url=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET&bbb=test 生成短url时bbb会消失
团团美 2015-08-27
  • 打赏
  • 举报
回复
data 地址,url里面如果有两个以上参数,生成的短url只有第一个参数。求解
by_封爱 2015-08-14
  • 打赏
  • 举报
回复
另外UploadString(Url, Data);即可 中间的POST不需要也行
by_封爱 2015-08-14
  • 打赏
  • 举报
回复

 var data = "url=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET";
 var url = "http://dwz.cn/create.php";
 var client = new System.Net.WebClient(); 
 client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
 var rs = client.UploadString(url, "POST", data);
 Console.WriteLine(rs);
测试可用...另外官方既然提供了方法 我就建议下不要来回的byte[]转换..费劲.
Dhoopu 2015-08-13
  • 打赏
  • 举报
回复
引用 4 楼 kobeair 的回复:
为啥请求之后的长连接只带了一个参数,原本有5个参数
将Url编码以后再传过去就可以了
kobeair 2015-06-29
  • 打赏
  • 举报
回复
为啥请求之后的长连接只带了一个参数,原本有5个参数
  • 打赏
  • 举报
回复
虽然没用过百度的api 但如果是标准rest格式的话,可以用HttpClient来访问
var httpClient = new HttpClient();
string url;
var dic = new Dictionary<string, string>();
HttpContent httpContent = new FormUrlEncodedContent(dic);
var task=httpClient.PostAsync(url, httpContent);
var responseContent = task.Result.Content
zfcode 2015-02-26
  • 打赏
  • 举报
回复
把http去了试试。。。如下 我这边测试可以了
post地址:http://dwz.cn/create.php
加上请求头:

Host: dwz.cn
Accept: */*
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Pragma: no-cache
Cache-Control: no-cache
Referer: http://dwz.cn/
slwsss 2015-02-26
  • 打赏
  • 举报
回复
client.UploadData(url, "POST", postData); 这行去掉

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧