请大家帮忙看看...谢谢
/// <summary>
/// 实现登录
/// </summary>
/// <param name="targetURL">请求的路径,必须是实现登录的路径(*)</param>
/// <param name="cc">用于维持cookies Or Session</param>
/// <param name="param">Post提交的信息(用户名,密码)</param>
/// <returns>html page</returns>
public static CookieContainer cc = new CookieContainer();//维持cookie或Session
public static string PostAndGetHTML(string targetURL, Hashtable param)
{
//formData用于保存提交的信息
string formData = "";
foreach (DictionaryEntry de in param)
{
formData += de.Key.ToString() + "=" + de.Value.ToString() + "&";
}
if (formData.Length > 0)
formData = formData.Substring(0, formData.Length - 1); //去除最后一个 '&'
//把提交的信息转码(post提交必须转码)
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(formData);
//开始创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetURL);
request.Method = "POST"; //提交方式:post
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)";
request.AllowAutoRedirect = true;
request.KeepAlive = true;
Stream newStream = request.GetRequestStream();
newStream.Write(data, 0, data.Length);//将请求的信息写入request
newStream.Close();
request.CookieContainer = cc;
//向服务器发送请求
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//获得Cookie 保存到Appliction中
string cookieHeader = request.CookieContainer.GetCookieHeader(new Uri(targetURL));
HttpContext.Current.Application.Lock();
HttpContext.Current.Application["cookieHeader"] = cookieHeader;
HttpContext.Current.Application.UnLock();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.UTF8);
string strResult = sr.ReadToEnd();
return "OK";
}
为什么我保存了clookie 在访问其它页面还是没有登陆上?这是为什么? 因为我得到了验证码,所以我是这样调用的
Hashtable hs = new Hashtable();
hs.Add("Password", txtPassword.Text);
hs.Add("VCode", Vcode.Text);
hs.Add("UserName", txtName.Text);
string PostAndGetHTML("登陆的地址", hs)
返回的还是登陆页面。还有返回登陆超时的提示?请大家发表下自己的意见,思路也行