CookieContainer cc = new CookieContainer();
HttpWebRequest request;
public void GetHtmlData(string postUrl )
{
HttpWebResponse response;
request = WebRequest.Create(postUrl) as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
request.AllowAutoRedirect = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "*/*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
request.CookieContainer = cc;
request.KeepAlive = true;
using (response = (HttpWebResponse)request.GetResponse())
{
Console.WriteLine(response.Headers.ToString());
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default))
{
cc.Add(response.Cookies);
}
}
} public void DowloadCheckImg(string Url)
{
request = (HttpWebRequest)WebRequest.Create(Url);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Method = "GET";
request.CookieContainer = cc;
using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse())
{
using (Stream sream = webResponse.GetResponseStream())
{
Image myImage = Image.FromStream(sream);
this.pictureBox1.Image = myImage;
this.pictureBox1.Refresh();
}
}
} public void PostData(string postData, string postUrl,string refe)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(postUrl) as HttpWebRequest;
byte[] data = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.CookieContainer = cc;
request.Referer = refe;
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
} using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
this.richTextBox1.Text = reader.ReadToEnd(); if (response.Cookies.Count > 0)
cc.Add(response.Cookies); }
}
} private void button1_Click(object sender, EventArgs e)
{ string username = "%e6%9e%97%e7%90%b3%e6%9e%97";
string userpass = "QAZwsx12369874"; string posturl = "https://cas.baidu.com/?action=login";
string poststring = "entered_login=" + username + "&entered_password=" + userpass + "&entered_imagecode=" + textBox1.Text + "&charset=utf-8&appid=3&fromu=http%253A%252F%252Fwww2.baidu.com%252F";
string refurl = "http://cas.baidu.com/?tpl=www2&fromu=http%3A%2F%2Fwww2.baidu.com%2F"; PostData(poststring, posturl, refurl); }
private void getImage()
{
GetHtmlData("http://cas.baidu.com/?tpl=www2&fromu=http%3A%2F%2Fwww2.baidu.com%2F");
TimeSpan ts = new TimeSpan(System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks);
string tagUrl = "http://cas.baidu.com/?action=image&key=" + Convert.ToString((long)ts.TotalMilliseconds);
DowloadCheckImg(tagUrl);
} private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
getImage();
}
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
}哪里出错了呢 已经纠结了很久了
HttpWebRequest request;
public void GetHtmlData(string postUrl )
{
HttpWebResponse response;
request = WebRequest.Create(postUrl) as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
request.AllowAutoRedirect = true;
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "*/*";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
request.CookieContainer = cc;
request.KeepAlive = true;
using (response = (HttpWebResponse)request.GetResponse())
{
Console.WriteLine(response.Headers.ToString());
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default))
{
cc.Add(response.Cookies);
}
}
} public void DowloadCheckImg(string Url)
{
request = (HttpWebRequest)WebRequest.Create(Url);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Method = "GET";
request.CookieContainer = cc;
using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse())
{
using (Stream sream = webResponse.GetResponseStream())
{
Image myImage = Image.FromStream(sream);
this.pictureBox1.Image = myImage;
this.pictureBox1.Refresh();
}
}
} public void PostData(string postData, string postUrl,string refe)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(postUrl) as HttpWebRequest;
byte[] data = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.CookieContainer = cc;
request.Referer = refe;
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
} using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
this.richTextBox1.Text = reader.ReadToEnd(); if (response.Cookies.Count > 0)
cc.Add(response.Cookies); }
}
} private void button1_Click(object sender, EventArgs e)
{ string username = "%e6%9e%97%e7%90%b3%e6%9e%97";
string userpass = "QAZwsx12369874"; string posturl = "https://cas.baidu.com/?action=login";
string poststring = "entered_login=" + username + "&entered_password=" + userpass + "&entered_imagecode=" + textBox1.Text + "&charset=utf-8&appid=3&fromu=http%253A%252F%252Fwww2.baidu.com%252F";
string refurl = "http://cas.baidu.com/?tpl=www2&fromu=http%3A%2F%2Fwww2.baidu.com%2F"; PostData(poststring, posturl, refurl); }
private void getImage()
{
GetHtmlData("http://cas.baidu.com/?tpl=www2&fromu=http%3A%2F%2Fwww2.baidu.com%2F");
TimeSpan ts = new TimeSpan(System.DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks);
string tagUrl = "http://cas.baidu.com/?action=image&key=" + Convert.ToString((long)ts.TotalMilliseconds);
DowloadCheckImg(tagUrl);
} private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
getImage();
}
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
}哪里出错了呢 已经纠结了很久了
最简单的办法,用高版本的IE浏览器 或者Google Chrome 开发者工具抓一下提交的数据,除了验证码其余参数原封不动移植。 得到正确的服务器返回后在进行下一步计划。原因分析:
PostData POST提交数据的地方也加入 request.AllowAutoRedirect = true; 属性设置,大多数网站登录成功后都会302跳转。