问题描述
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");varurl="http://dwz.cn/create.php";varclient=newWebClient();client.Headers.Add("Content-Type","application/x-www-form-urlencoded");client.UploadData(url,"POST",postData);byte[]responseData=client.UploadData(url,"POST",postData);varr=Encoding.UTF8.GetString(responseData);
最后的r=‘{"status":-1,"err_msg":"网址不能为空","longurl":""}’
解决方案
解决方案二:
虽然没用过百度的api但如果是标准rest格式的话,可以用HttpClient来访问varhttpClient=newHttpClient();stringurl;vardic=newDictionary<string,string>();HttpContenthttpContent=newFormUrlEncodedContent(dic);vartask=httpClient.PostAsync(url,httpContent);varresponseContent=task.Result.Content
解决方案三:
client.UploadData(url,"POST",postData);这行去掉
解决方案四:
把http去了试试。。。如下我这边测试可以了post地址:http://dwz.cn/create.php
加上请求头:Host:dwz.cnAccept:*/*Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateContent-Type:application/x-www-form-urlencoded;charset=UTF-8X-Requested-With:XMLHttpRequestPragma:no-cacheCache-Control:no-cacheReferer:http://dwz.cn/
解决方案五:
为啥请求之后的长连接只带了一个参数,原本有5个参数
解决方案六:
引用4楼kobeair的回复:
为啥请求之后的长连接只带了一个参数,原本有5个参数
将Url编码以后再传过去就可以了
解决方案七:
解决方案八:
vardata="url=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET";varurl="http://dwz.cn/create.php";varclient=newSystem.Net.WebClient();client.Headers.Add("Content-Type","application/x-www-form-urlencoded");varrs=client.UploadString(url,"POST",data);Console.WriteLine(rs);
测试可用...另外官方既然提供了方法我就建议下不要来回的byte[]转换..费劲.
解决方案九:
另外UploadString(Url,Data);即可中间的POST不需要也行
解决方案十:
data地址,url里面如果有两个以上参数,生成的短url只有第一个参数。求解
解决方案十一:
url=http://bbs.csdn.net/topics/new?forum_id=ASPDotNET&bbb=test生成短url时bbb会消失
解决方案十二:
对啊当URL多参数时就会截断生成短网址求教??如何解决这个问题
解决方案十三:
编码一下吧Uri.EscapeUriString
解决方案十四:
我来回答一下吧,这样处理就对了url="http://bbs.csdn.net/topics/new?"+Uri.EscapeDataString("forum_id=ASPDotNET&bbb=test");
解决方案十五:
直接用ajax调用,多方便啊,不用后台代码就可以了。
解决方案:
没用过这个东西,但是代码里面好像有点问题,不知道对不对。client.UploadData(url,"POST",postData);byte[]responseData=client.UploadData(url,"POST",postData);这两句是不是重复了