C#post提交带有特殊符号的数据老是出错

lzhpqly 2012-04-04 09:17:38
static public string sjpost(string get,string cs,ref string sRtn)/*POST数据发送函数*/
{

WebResponse res = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(get);/*数据发送地址*/
request.Method = "post";
request.KeepAlive = true;
request.UserAgent = "User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)";//浏览器信息
request.ContentType = "application/x-www-form-urlencoded";
//postdata= System.Web.HttpUtility.UrlEncode(cs, Encoding.GetEncoding("gb2312"));
//byte[] postdata = Encoding.GetEncoding("gb2312").GetBytes(cs);
//byte[] postdata = Encoding.GetEncoding("UTF-8").GetBytes(cs);
byte[] postdata = Encoding.ASCII.GetBytes(cs);/*发送数据*/
request.ContentLength = postdata.Length;
Stream postStream = request.GetRequestStream();
postStream.Write(postdata, 0, postdata.Length);
postStream.Close();
res = request.GetResponse() as HttpWebResponse;
Encoding encode = Encoding.GetEncoding("UTF-8");
StreamReader stmR = new StreamReader(res.GetResponseStream(), encode);
sRtn = stmR.ReadToEnd();

return sRtn;

}

上面是我的代码,我提交类似id=user&password=password&code=code&site=asiabsi&page=default&lang=zh-cn&key=27676654330793&tea=776493&tzDiff=0&sv=B14 这类格式的数据的时候老是提示出错,无法实现网站登录,请高手指点下到底是为什么??
...全文
692 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzhpqly 2012-04-09
  • 打赏
  • 举报
回复
那怎么获得COKIE并绑定呢?最好有例子学习下
wang466791739 2012-04-08
  • 打赏
  • 举报
回复
首先下载HttpAnalyzerStdV3查看要POST网站的数据包。然后再分析数据!
很多网站提交的数据都要System.Web.HttpUtility.UrlEncode(),只正对参数,并不是整体。
例如:
string userid="账号";
string URL_userid = System.Web.HttpUtility.UrlEncode(userid);
lzhpqly 2012-04-07
  • 打赏
  • 举报
回复
怎么没有人解释下呢?
yangchun1213 2012-04-06
  • 打赏
  • 举报
回复
乱码?
lzhpqly 2012-04-06
  • 打赏
  • 举报
回复
修改以后还是一样,总是有些数据POST出去以后会丢失
anzhiqiang_touzi 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
首先对cs做urlencode
[/Quote]
lzhpqly 2012-04-06
  • 打赏
  • 举报
回复
我想问下POST数据是不是不能直接POST出去 带&和=这些符号的数据,如果是应该怎么处理,最好能写个例子我看看,谢谢~~~~~·
tiangong789 2012-04-06
  • 打赏
  • 举报
回复
很可能跟浏览器对url的解析能力有关。。
lzhpqly 2012-04-06
  • 打赏
  • 举报
回复
不是乱码,是有部分数据POST出去以后服务器接收不到
lzhpqly 2012-04-05
  • 打赏
  • 举报
回复
是对&编码?=不用吧?
threenewbee 2012-04-05
  • 打赏
  • 举报
回复
对哦。没看清,你怎么整体做编码了呢。
真相重于对错 2012-04-05
  • 打赏
  • 举报
回复
ring postsj = string.Format("id={0}&password={1}&code={2}&site=asiabsi&page=default&lang=zh-cn&key={3}&tea={4}&tzDiff=0&sv=B14",user,pw,coed,code1,code2);
System.Web.HttpUtility.UrlEncode(postsj);
==============
不是对整个postsj encode 而是对具体参数encode
lzhpqly 2012-04-05
  • 打赏
  • 举报
回复
还是不行改成postsj = System.Web.HttpUtility.UrlEncode(postsj);后直接连返回的数据都没有
threenewbee 2012-04-04
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlEncode(postsj);
=>
postsj = System.Web.HttpUtility.UrlEncode(postsj);
dalmeeme 2012-04-04
  • 打赏
  • 举报
回复
UrlEncode跟字符集相关的,你先确定是gb2312还是utf-8,然后用那个UrlEncode方法的重载。
orochiheart 2012-04-04
  • 打赏
  • 举报
回复
UrlEncode用来转url的 还有个转文本内容的 叫什么code来着?
lzhpqly 2012-04-04
  • 打赏
  • 举报
回复
我用
string postsj = string.Format("id={0}&password={1}&code={2}&site=asiabsi&page=default&lang=zh-cn&key={3}&tea={4}&tzDiff=0&sv=B14",user,pw,coed,code1,code2);
System.Web.HttpUtility.UrlEncode(postsj);
试过,还是不成功
马肠河 2012-04-04
  • 打赏
  • 举报
回复
向您请教一下,这段时间北京找工作好找吗?是淡季还是旺季?我工作经验不到一年,想辞职。谢谢啊[Quote=引用 1 楼 的回复:]
首先对cs做urlencode
[/Quote]
threenewbee 2012-04-04
  • 打赏
  • 举报
回复
首先对cs做urlencode

110,565

社区成员

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

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

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