我试图登录网站并下载一些页面,因为它在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?如果不是,我该怎么用? 感谢。
答案 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;
}