C#使用WebRequest登录网站和下载源 - 使用Cookie时出现问题

时间:2011-09-29 14:10:21

标签: c# login web download webrequest

登录时,我需要登录网站下载各种页面的源代码。使用Windows Forms WebBrowser类时,我能够很容易地做到这一点,但这不合适,我需要能够使用WebRequest或其他任何一个执行此操作。不幸的是,它不喜欢我处理cookie的方式。

我正在使用以下代码并获得以下响应:{“w_id”:“LoginForm2_6”,“message”:“请在浏览器中启用Cookie,以便您可以登录。”,“成功”:0,“ showLink“:假}

string url2 = "%2Fapp%2Futils%2Flogin_form%2Fredirect%2Fhome";
string login = "username";
string password = "password";
string w_id = "LoginForm2_6";
string loginurl = "http://loginurl.com";

string cookieHeader;

WebRequest req = WebRequest.Create(loginurl);
req.Proxy = WebRequest.DefaultWebProxy;
req.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
req.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
req.Method = "POST";
string postData = string.Format("w_id={2}&login={0}&password={1}&url2={3}", login, password, w_id, url2);
byte[] bytes = Encoding.ASCII.GetBytes(postData);
req.ContentLength = bytes.Length;
using (Stream os = req.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
WebResponse resp = req.GetResponse();
cookieHeader = resp.Headers["Set-cookie"];

string pageSource = "";
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
richTextBox1.Text = pageSource;

如果有人能告诉我哪里出错了,我们将不胜感激。

另外,为了让您知道,如果我在webbrowser类中使用以下内容,它可以正常工作:

b.Navigate(fullurl, "", enc.GetBytes(postData), "Content-Type: application/x-www-form-urlencoded\r\n");

1 个答案:

答案 0 :(得分:0)

我知道这个回复已经过时了,但是用户Matthew Brindley回答了类似question的完整工作示例。问题是关于访问 需要用户先前登录的网站的源代码。所有这些都是使用WebRequestWebResponse

从C#应用程序完成的