C# 在c中使用WebRequest和WebResponse类登录#

C# 在c中使用WebRequest和WebResponse类登录#,c#,asp.net,C#,Asp.net,大家好,我在使用webRequest和WebResponse登录网站时遇到问题。 我想让我通过发布一个问题来联系专家。 我正在尝试登录,并希望在登录成功后访问该页面。 我使用下面的代码来实现这一点。但不知怎的,它失败了 string poststring = string.Format("Username={0}&Password={1}", Username, Password); byte[] postdata = Encoding.UTF8.GetBytes(poststring)

大家好,我在使用webRequest和WebResponse登录网站时遇到问题。 我想让我通过发布一个问题来联系专家。 我正在尝试登录,并希望在登录成功后访问该页面。 我使用下面的代码来实现这一点。但不知怎的,它失败了

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来执行此操作。

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

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

request.CookieContainer = cc;
您需要将所有请求传递到同一个容器中,以便共享正确的cookie并设置正确的会话


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

如何使用此cookie访问成功登录后打开的下一页。正如我所说,您需要将容器传递到所有需要共享cookie的请求中。Lloyd,我如何知道我已使用WebRequest和WebResponse成功登录这取决于站点,您必须检查容器中的相关成功cookies等。除了使用CookieCollection还有其他方法吗