C# - 登录网站,$ _POST和cookies

时间:2015-04-19 18:15:50

标签: c# post cookies

我试图登录网站并下载一些页面,因为它在C#中看到登录的用户。 我有类,哪里有函数将POST发送到登录页面进行登录。我已经验证过,我确实登录了,但数据并没有保留,因此当我下载我需要的页面的HTML时,我会看到要登录的页面。 我找到了this,但我不知道如何实现它。 我有两个功能的课程:Login()用于登录网站,基于this示例:

using(WebClient client = new WebClient())
{
    System.Collections.Specialized.NameValueCollection reqparm = new System.Collections.Specialized.NameValueCollection();
    reqparm.Add("param1", "<any> kinds & of = ? strings");
    reqparm.Add("param2", "escaping is already handled");
    byte[] responsebytes = client.UploadValues("http://localhost", "POST", reqparm);
    string responsebody = Encoding.UTF8.GetString(responsebytes);
}

然后,第二个函数DownloadHtml(string url),包含这个:

 using (WebClient client = new WebClient()) {
       client.Encoding = Encoding.UTF8;
       html = client.DownloadString(url);
       return html;
 }

如何在Login()中保存cookis并在DownloadHtml()中使用它们以将该页面视为已登录用户?或者我不应该使用WebClient?如果不是,我该怎么用? 感谢。

1 个答案:

答案 0 :(得分:0)

在您收到第一次授权请求后,您应该保存它们(可能在某个变量中),然后手动将它们添加到您将要进行的任何后续请求中。

为请求添加cookie可以这样做:

using (WebClient client = new WebClient())
{
    client.Headers.Add("Cookie", "AUTH_COOKIE_NAME=" + AUTH_COOKIE_VALUE);
    client.Encoding = Encoding.UTF8;
    html = client.DownloadString(url);
    return html;
}