碰到一个带验证码的页面,逻辑上碰到一点问题,请各位帮忙,代码如下://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访问的时候验证码又变化了?  类似这样的问题应该怎么处理?

解决方案 »

  1.   

    http://topic.csdn.net/u/20100604/18/fadb1e99-e010-4aad-9e4f-bf5f0f745ee1.html
      

  2.   

    多谢回复,但我的问题貌似和他的不一样,我现在登录没任何问题,主要是验证码, 第一次登录,无论登录信息对错,结果都失败,并或者一个带验证码的页面,需要第二次登录,并且输入正确的验证码才可以完成登录。问题:我用Httpwebrequest & Httpwebresponse 获得了带验证码的第二个页面,但我如何继续用第二个页面提交?  我如果用一个新的 httpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl);  应该会重新访问连接,这样就不会显示验证码。
      

  3.   

    原来是相同的 SessionId ,  我这个是PHP页面, 取了几次 找不到取SessionId的方法。
      

  4.   

    无法获取 SeessionID .. 晕了。   
    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)