c# - 如何使用 WebClient 登录站点?

标签 c# authentication webclient

我想使用 C# 中的 WebClient 对象下载一些东西,但下载域要求我登录。如何使用 WebClient 登录并保留 session 数据?我知道如何使用 WebClient 发布数据。

最佳答案

如果您遇到的问题是您可以进行身份​​验证,但您不能保留身份验证 cookie,这里是 WebClient 的 cookie 感知版本。

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 的表单例份验证,我没有时间去浏览它,但至少它让你开始使用谷歌。

关于c# - 如何使用 WebClient 登录站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740752/

相关文章:

asp.net - 如何根据用户角色限制 asp.net 控制操作?

javascript - Cypress 中的 SSO 登录

unit-testing - 如何将 MockWebServer 用于 webclient 的 Junit 测试用例?

c# - 如何在封闭泛型类型上获取泛型方法,从开放泛型类型打开 MethodInfo?

c# - Unity WWW 请求我可以使用多个吗?

c# - 反射器中的列表

c# - 如何强制浏览器下载 xml 文件?

php - 无法从 MySQL 数据库获取行

internet-explorer - 处理 301 重定向时的客户端 Web 浏览器行为

java - 错误 : java. lang.ClassCastException : class org. apache.cxf.bus.spring.SpringBusFactory