我想在C#中使用WebClient对象下载内容,但下载域要求我登录。如何使用WebClient登录并保存会话数据?我知道如何使用WebClient发布数据。
答案 0 :(得分:48)
如果您遇到的问题是您可以进行身份验证,但是您无法在此处保留身份验证Cookie,那么这是一个Cookie感知版本的WebClient。
private class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
: this(new CookieContainer())
{ }
public CookieAwareWebClient(CookieContainer c)
{
this.CookieContainer = c;
}
public CookieContainer CookieContainer { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
var castRequest = request as HttpWebRequest;
if (castRequest != null)
{
castRequest.CookieContainer = this.CookieContainer;
}
return request;
}
}
编辑: 你给我的链接使用HTTP POST的表单身份验证,我没有时间走路,但至少它让你开始使用Google。
答案 1 :(得分:-1)
看一下使用Credentials属性。例如。如果使用基本身份验证,则必须使用正确的用户名和密码将该属性设置为NetworkCredential的实例。
指向的sample显示如何使用当前登录的用户凭据进行请求。