使用基于表单的身份验证从网站读取XML文件

时间:2011-03-06 20:22:58

标签: asp.net xml forms-authentication

是否有标准方法从使用基于表单的身份验证的网站读取XML文件?我们希望将该文件读入桌面应用程序。

谢谢 - 戴夫

3 个答案:

答案 0 :(得分:2)

如果您正在谈论ASP.NET Forms Authentication,这将是一个两步过程:

  1. 向登录页面发送HTTP请求,发送用户名和密码,并捕获服务器发送的身份验证cookie
  2. 向脚本发送HTTP请求,返回发送身份验证cookie的XML文件以及请求
  3. 以下是使用自定义WebClient的示例:

    public class CookieAwareWebClient : WebClient
    {
        public CookieContainer Cookies { get; private set; }
        public CookieAwareWebClient()
        {
            Cookies = new CookieContainer();
        }
    
        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address) as HttpWebRequest;
            request.CookieContainer = Cookies;
            return request;
        }
    }
    
    class Program
    {
        static void Main()
        {
            using (var client = new CookieAwareWebClient())
            {
                client.UploadValues("http://www.foo.com/login.aspx", new NameValueCollection
                {
                    { "username", "foo" },
                    { "password", "secret" },
                });
                client.DownloadFile("http://www.foo.com/foo.xml", "foo.xml");
            }
        }
    }
    

    当然,在现实生活中,事情可能会更复杂,因为根据站点的不同,您可能需要沿着ViewState和其他ASP.NET特定垃圾一起发送请求。

答案 1 :(得分:1)

在http请求中发布凭据,在响应中将有一个您必须重复用于下次请求的身份验证Cookie

答案 2 :(得分:1)

您将不得不在大致以下步骤中使用HTTPWebRequest / HTTPWebResponse:

1:使用请求向网站提交用户名和密码 2:保存Cookies(我假设cookie将包含登录工作的ok) 3:使用另一个请求(包括这些cookie)来获取XML。

要查找初始请求的代码,您需要查看登录页面的源代码以查看提交操作,然后通过您的请求重现此操作。您可以使用小提琴手或萤火虫等帮助解决这个问题。