栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

WebClient访问页面和凭证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WebClient访问页面和凭证

我怀疑您尝试访问的网页使用了表单身份验证。这意味着,如果您希望能够访问受保护的资源,则必须提供有效的身份验证cookie。为了获得有效的身份验证cookie,您必须首先通过向发出cookie的LogOn页面发送POST请求来对自己进行身份验证。检索cookie后,您将能够在受保护资源上的后续请求中发送该cookie。您还应该注意,开箱即用

WebClient
不支持cookie。因此,您可以编写一个自定义cookie的Web客户端:

public class cookieAwareWebClient : WebClient{    public cookieAwareWebClient()    {        cookieContainer = new cookieContainer();    }    public cookieContainer cookieContainer { get; private set; }    protected override WebRequest GetWebRequest(Uri address)    {        var request = (HttpWebRequest)base.GetWebRequest(address);        request.cookieContainer = cookieContainer;        return request;    }}

现在,您可以使用此客户端触发2个请求:

using (var client = new cookieAwareWebClient()){    var values = new NamevalueCollection    {        { "username", "john" },        { "password", "secret" },    };    client.UploadValues("http://domain.loc/logon.aspx", values);    // If the previous call succeeded we now have a valid authentication cookie    // so we could download the protected page    string result = client.DownloadString("http://domain.loc/testpage.aspx");}

显然,由于ASP.NET的ViewState不正确,您可能需要在登录请求中发送几个其他参数。您可以执行以下操作:在Web浏览器中进行身份验证,并使用FireBug查找需要发送的确切参数和标头。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号