是否有标准方法从使用基于表单的身份验证的网站读取XML文件?我们希望将该文件读入桌面应用程序。
谢谢 - 戴夫
答案 0 :(得分:2)
如果您正在谈论ASP.NET Forms Authentication,这将是一个两步过程:
以下是使用自定义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。
要查找初始请求的代码,您需要查看登录页面的源代码以查看提交操作,然后通过您的请求重现此操作。您可以使用小提琴手或萤火虫等帮助解决这个问题。