使用c#中的WebRequest和WebResponse类登录

时间:2013-08-23 10:15:55

标签: c# asp.net

大家好我在使用webRequest和WebResponse登录网站时遇到了问题。 我想让我通过发帖提问专家。 我正在尝试登录http://www.mbhatt.in并希望在登录成功后访问该页面。 我使用以下代码来执行此操作。但不知怎的,它失败了

string poststring = string.Format("Username={0}&Password={1}", Username, Password);
byte[] postdata = Encoding.UTF8.GetBytes(poststring);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = postdata.Length;
webRequest.Credentials = new NetworkCredential(Username, Password);
Stream writer = webRequest.GetRequestStream();
writer.Write(postdata, 0, postdata.Length);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
cookies.Add(webResponse.Cookies);

当cookie被添加到我的浏览器中时,我不知道该怎么做。如何在登录后使用此cookie访问该网站的其他页面。我想使用WebRequest和WebResponse来执行此操作。

1 个答案:

答案 0 :(得分:3)

您需要创建CookieContainer并将其分配给Web请求,例如:

var cc = new CookieContainer();
var request = WebRequest.Create("http://.../");

request.CookieContainer = cc;

您需要为所有请求传入相同的容器,以便共享正确的Cookie并设置正确的会话

MSDN上有一个博客here进一步讨论了这个问题,并提供了一个更大的示例集。