如何登录/知道以登录网站并执行操作?

这是一个迷你项目,作为“自学编码马拉松”的一部分,我一直在为我负责。 我需要

  1. 登录需要用户/通行证的网站(例如facebook)并返回响应。 我已经设法使用WebRequestWebResponse类实现了这一点。
  2. 下一步是以编程方式向我的导师发送消息

这是我难倒的地方。 如何访问网站的“发送消息”function? 我想我需要首先查找查询参数,我可以使用firebug这样做,但我很困惑,我怎么能坚持我的“登录状态”并发送消息? 我一直在寻找一下,我认为它涉及到cookies,但我不知道如何继续。

谢谢。

你需要CookieCollection; 收到您的登录请求的响应后,您可以从响应中读取cookie。

  var cookies = new CookieContainer(); ServicePointManager.Expect100Continue = false; CookieCollection receivedCookies = new CookieCollection(); try { var request = (HttpWebRequest) WebRequest.Create(ServerUrl + "index.php"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = cookies; string postData = "try=&username=someLogin&password=somepass"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentLength = byteArray.Length; using (Stream dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } // Get the response. using (WebResponse response = request.GetResponse()) { receivedCookies = ((HttpWebResponse) response).Cookies; Logger.DebugFormat("received {0} cookies", receivedCookies.Count); using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { string responseFromServer = reader.ReadToEnd(); Logger.DebugFormat("response from server after login-post: {0}", responseFromServer); } } } } catch (Exception ex) { Logger.FatalFormat("there was an exception during login: {0}", ex.Message); return (int) CreateResult.GenericError; } 

在后续请求期间,您必须始终添加该cookie:

  var request = (HttpWebRequest)WebRequest.Create(ServerUrl + "index.php?nav=callcenter&sub=ccagents&action=new"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = cookies; request.CookieContainer.Add(receivedCookies); 

当您登录时, Response将包含一个或多个cookie,您需要在任何后续请求中向服务器发送这些cookie。

我在这里找到了答案: 登录后的C#.NET Cookie处理