C# POST问题。
C# POST提交数据一直返回用户名和密码不能为空。求帮我看看提交的数据是怎么回事。string vm = GetVM_VM1();C# POST --------------------编程问答-------------------- 最简单的办法,你下个httpAnylize抓包工具,你手工登录网站抓下包看下post的数据是什么样的,在模仿它来post就OK了 --------------------编程问答-------------------- 你需要先get http://www.yuanmeng28.com/,让CookieContainer 得到cookie
string[] vm_ = vm.Split(',');
HttpWebRequest request = null;
HttpWebResponse response = null;
CookieContainer ck = null;
Stream sm = null;
string url = "http://www.yuanmeng28.com/member/Checkpass3.asp";
string PostData = "email=" + name + "&emailFlag=1&password=" + pwd + "&code=" + code + "&wm=" + vm_[0] + "&sn=&wm1=" + vm_[1] + "&sn1=&sum=登录";
//string PostData = "email=" + name + "&emailFlag=1&password=" + pwd + "&code=" + code + "&wm=F4&sn=&wm1=B2&sn1=&image.x=29&image.y=8";
request = (HttpWebRequest)HttpWebRequest.Create(url);
//request.ContentType = "application/x-www-form-urlencoded";
request.Referer = "http://www.yuanmeng28.com/";
request.Accept = "text/html, application/xhtml+xml, */*";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; qdesk 2.5.1277.202; Windows NT 6.1; WOW64; Trident/6.0)";
request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
request.CookieContainer = ck;
request.Method = "POST";
byte[] b = Encoding.UTF8.GetBytes(PostData);//将提交数据转换为字节集数组
request.AllowAutoRedirect = true;
request.ContentLength = b.Length;
sm = request.GetRequestStream();
sm.Write(b, 0, b.Length);//提交数据
response = (HttpWebResponse)request.GetResponse();
sm = response.GetResponseStream();
StreamReader sr = new StreamReader(sm, Encoding.Default);
string mess = sr.ReadToEnd();
sm.Close();
sr.Close();
return mess;
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 加上
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = b.Length;
看看 --------------------编程问答--------------------
这个我试过,加了之后怎么弄都提示验证码错误。。不加这个提示用户名和密码不能为空 --------------------编程问答--------------------
"email=" + name + "&emailFlag=1&password=" + pwd + "&code=" + code + "&wm=" + vm_[0] + "&sn=&wm1=" + vm_[1] + "&sn1=&sum=登录";
这个就是抓的数据包。里面的变量是原本的内容 --------------------编程问答--------------------
那说明不加的问题比加了更严重,前者好歹数据提交上去了,验证码不对。
验证码不对的可能原因是,你没有附加正确的cookie,或者我不知道你怎么识别的图像,反正你识别的不是你请求的时候服务器给你的那个。 --------------------编程问答--------------------
加上
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = b.Length;
看看
这个我试过,加了之后怎么弄都提示验证码错误。。不加这个提示用户名和密码不能为空
那说明不加的问题比加了更严重,前者好歹数据提交上去了,验证码不对。
验证码不对的可能原因是,你没有附加正确的cookie,或者我不知道你怎么识别的图像,反正你识别的不是你请求的时候服务器给你的那个。
验证码是直接从网站的地址获取的,手动输入。验证码应该不会出问题的。。头大了。。 --------------------编程问答--------------------
加上
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = b.Length;
看看
这个我试过,加了之后怎么弄都提示验证码错误。。不加这个提示用户名和密码不能为空
那说明不加的问题比加了更严重,前者好歹数据提交上去了,验证码不对。
验证码不对的可能原因是,你没有附加正确的cookie,或者我不知道你怎么识别的图像,反正你识别的不是你请求的时候服务器给你的那个。
验证码是直接从网站的地址获取的,手动输入。验证码应该不会出问题的。。头大了。。
直接获取的不错,但是你要知道,你每次获取(如果不带上相同的cookie)都会造成验证码的刷新。因此提交验证的那个验证码和你看到的那个不是一个,当然验证失败。 --------------------编程问答--------------------
加上
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = b.Length;
看看
这个我试过,加了之后怎么弄都提示验证码错误。。不加这个提示用户名和密码不能为空
那说明不加的问题比加了更严重,前者好歹数据提交上去了,验证码不对。
验证码不对的可能原因是,你没有附加正确的cookie,或者我不知道你怎么识别的图像,反正你识别的不是你请求的时候服务器给你的那个。
验证码是直接从网站的地址获取的,手动输入。验证码应该不会出问题的。。头大了。。
直接获取的不错,但是你要知道,你每次获取(如果不带上相同的cookie)都会造成验证码的刷新。因此提交验证的那个验证码和你看到的那个不是一个,当然验证失败。
那我加载页面的时候获取页面的cook,登录的时候
request.Headers["Cookie"] = cookies;这样把cook附加进去行么? --------------------编程问答--------------------
加上
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = b.Length;
看看
这个我试过,加了之后怎么弄都提示验证码错误。。不加这个提示用户名和密码不能为空
那说明不加的问题比加了更严重,前者好歹数据提交上去了,验证码不对。
验证码不对的可能原因是,你没有附加正确的cookie,或者我不知道你怎么识别的图像,反正你识别的不是你请求的时候服务器给你的那个。
验证码是直接从网站的地址获取的,手动输入。验证码应该不会出问题的。。头大了。。
直接获取的不错,但是你要知道,你每次获取(如果不带上相同的cookie)都会造成验证码的刷新。因此提交验证的那个验证码和你看到的那个不是一个,当然验证失败。
这个是现在的
string PostData = "email=" + name + "&emailFlag=1&password=" + pwd + "&wm=D1&sn=&wm1=F2&sn1=&sum=%B5%C7%C2%BD";
这个是之前的:
string PostData = "email=" + name + "&emailFlag=1&password=" + pwd + "&code=" + code + "wm=D1&sn=&wm1=F2&sn1=&sum=%B5%C7%C2%BD";
可是我抓的数据包中确实提交了验证码。无法理解了。。
补充:.NET技术 , C#