碰到一个带验证码的页面,逻辑上碰到一点问题,请各位帮忙,代码如下://Post 数据给WEB服务器
HttpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl)
string LoginData = "username=xxxx&password=xxxxxx";
LoginHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
LoginHttpWebRequest.ContentLength = LoginData.Length;
LoginHttpWebRequest.Method = "POST";
LoginHttpWebRequest.CookieContainer = CookieArray;
Stream myRequestStream = LoginHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.Default);
/*尝试在这里加一个 StreamReader MyReader = new StreamReader(myStreamWriter); txt = MyReader.ReadToEnd(); 但链接报错,如果在提交之前就可以把页面读出来就可以判定带验证码一起write数据过去,另外验证码页面一定要login失败一次才会出现验证码,而且不能直接访问登录页面,如果重新访问登录页面则验证码消失。*/
myStreamWriter.Write(LoginData);
myStreamWriter.Close();
myRequestStream.Close();//接收返回的值到 Txt
HttpWebResponse myHttpWebResponse = (HttpWebResponse)LoginHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies = CookieArray.GetCookies(LoginHttpWebRequest.RequestUri);
WebHeaderCollection a = myHttpWebResponse.Headers;
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.Default);
Txt = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();我POST数据过去会出验证码,这样从返回的HTML数据里可以看到,我计划把验证码图片存储下来,然后第二次带验证码一起POST给服务器,但问题是我第二次重新用Httpwebrequest访问的时候验证码又变化了? 类似这样的问题应该怎么处理?
HttpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl)
string LoginData = "username=xxxx&password=xxxxxx";
LoginHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
LoginHttpWebRequest.ContentLength = LoginData.Length;
LoginHttpWebRequest.Method = "POST";
LoginHttpWebRequest.CookieContainer = CookieArray;
Stream myRequestStream = LoginHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.Default);
/*尝试在这里加一个 StreamReader MyReader = new StreamReader(myStreamWriter); txt = MyReader.ReadToEnd(); 但链接报错,如果在提交之前就可以把页面读出来就可以判定带验证码一起write数据过去,另外验证码页面一定要login失败一次才会出现验证码,而且不能直接访问登录页面,如果重新访问登录页面则验证码消失。*/
myStreamWriter.Write(LoginData);
myStreamWriter.Close();
myRequestStream.Close();//接收返回的值到 Txt
HttpWebResponse myHttpWebResponse = (HttpWebResponse)LoginHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies = CookieArray.GetCookies(LoginHttpWebRequest.RequestUri);
WebHeaderCollection a = myHttpWebResponse.Headers;
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.Default);
Txt = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();我POST数据过去会出验证码,这样从返回的HTML数据里可以看到,我计划把验证码图片存储下来,然后第二次带验证码一起POST给服务器,但问题是我第二次重新用Httpwebrequest访问的时候验证码又变化了? 类似这样的问题应该怎么处理?
for (int i = 0; i < myHttpWebResponse.Headers.Count; ++i)
cookieid = cookieid + myHttpWebResponse.Headers.Keys[i] + ":" + myHttpWebResponse.Headers[i] + ";";输出结果:Vary:Accept-Encoding;Connection:Close;Content-Length:53251;Content-Type:text/html;charset=utf-8;Date:Sun,23 Jan 2011 19:03:14 GMT;Set-Cookie:highscoreserver=1;expires=Thu,01-Jan-1970 00:00:30 GMT;Server:Apache;为什么得不到SessionID ? 用软件监听结果如下:
Cookie: __utma=228488961.352808179.1295803768.1295803768.1295807636.2; __utmb=228488961.1.10.1295807636; __utmc=228488961; __utmz=228488961.1295803768.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)