我希望使用C#中的WebClient对象下载某些内容,但是下载域要求我登录。如何使用WebClient登录并保留会话数据?我知道如何使用WebClient提交数据。
我希望使用C#中的WebClient对象下载某些内容,但是下载域要求我登录。如何使用WebClient登录并保留会话数据?我知道如何使用WebClient提交数据。
如果你遇到的问题是能够进行身份验证,但无法保持身份验证 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上的搜索提供一个起点。
MSDN WebClient
,第一个结果就是WebClient的MSDN页面,其中包括命名空间。对于任何.NET类,只需输入 MSDN YourClassName
,你要查找的类将在前3个链接中。 - Scott Chamberlain请查看使用凭据属性。例如,如果使用基本身份验证,则必须将该属性设置为具有正确用户名和密码的NetworkCredential实例。
示例指向了如何使用当前登录用户的凭据进行请求。
DoesNotWorkNullReferenceException
@MonsterMMORPG 无法工作的空引用异常
- C4d