post里的&怎么传

tanxiaolin520 2012-07-31 09:54:46
要求是:
请求:向dwz.cn/create.php发送post请求,发送数据包括url=长网址

返回:json格式的数据

status!=0 出错,查看err_msg获得错误信息(UTF-8编码)
成功,返回生成的短网址 tinyurl字段


我的代码:
string postDataStr = "url=http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073";
string Url = "http://dwz.cn/create.php";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.CookieContainer = new CookieContainer();
request.Method = "POST";
request.ContentLength = postDataStr.Length;
MessageBox.Show(postDataStr.Length.ToString());
request.ContentType = "application/x-www-form-urlencoded";
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8"));
string retString = myStreamReader.ReadToEnd();
textBox1.Text =retString;

现在的问题是每次传到&的时候就断了。如果把postDataStr换成http://www.hao123.com是OK的。

请高手指点如何在POST里把&传送出去,谢谢!
...全文
234 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这里还有一个简单思路,你在传值的时候替换掉&不就可以了。
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

就是winform才需要添加的,Web程序不用添加就自带了

C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.dll

64位系统
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll


其他版本相同

……
[/Quote]
变更代码的.net到4.0,不要用4.0的精简版支持。
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
工程属性里面,.NET版本不能说.net 4.0 client profile版本,

不用引用,你直接使用


string postDataStr = "url=" + Uri.EscapeDataString("http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073");

tanxiaolin520 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

使用
Uri.EscapeDataString
也可以,不用添加了
[/Quote]

OK
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
引用的版本要跟你的程序属性里面使用的版本相同,你的程序是.NET 4.0的吗
tanxiaolin520 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

就是winform才需要添加的,Web程序不用添加就自带了

C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.dll

64位系统
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll


其他版本相同
[/Quote]


警告 2 未能解析程序集“System.Web”。该程序集不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中。请删除对不在目标框架中的程序集的引用,或考虑重新确定项目的目标。 亿起发转存
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
使用
Uri.EscapeDataString
也可以,不用添加了
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
就是winform才需要添加的,Web程序不用添加就自带了

C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Web.dll

64位系统
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll


其他版本相同
tanxiaolin520 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

HttpUtility是.net自带的,添加引用System.Web.dll即可
[/Quote]
我是winform的,引用没有web.dll ·····
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
string postDataStr = "url=" + HttpUtility.UrlEncode("http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073");

返回的结果

{"longurl":"http:\/\/p.yiqifa.com\/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http:\/\/e.7daysinn.cn\/market\/index.php?sid=111073","status":0,"tinyurl":"http:\/\/dwz.cn\/2Bztp"}
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
HttpUtility是.net自带的,添加引用System.Web.dll即可
tanxiaolin520 2012-07-31
  • 打赏
  • 举报
回复
求HttpUtility的方法
[Quote=引用 1 楼 的回复:]
&替换成26%
或者HttpUtility.UrlEncode()

你应该对
http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073

整体进行HttpUt……
[/Quote]
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
你应该对
http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073

整体进行HttpUtility.UrlEncode()
tanxiaolin520 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

&替换成26%
或者Server.UrlEncode()
[/Quote]
不行的,26%测试失败

isjoe 2012-07-31
  • 打赏
  • 举报
回复
用%26代替
bdmh 2012-07-31
  • 打赏
  • 举报
回复
用%26代替试试,而且不用讲参数都写到一起,参考http://www.cnblogs.com/linyechengwei/archive/2011/08/22/2149801.html
孟子E章 2012-07-31
  • 打赏
  • 举报
回复
&替换成26%
或者HttpUtility.UrlEncode()

你应该对
http://p.yiqifa.com/c?s=e8e3e940&w=378742&c=1340&i=1263&l=0&e=c&t=http://e.7daysinn.cn/market/index.php?sid=111073

整体进行HttpUtility.UrlEncode()

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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