4

我想通过 RSS 获取收件箱,我可以在使用 Response.Redirect 时获取 XML,但无法获取 XML 格式,它会抛出(401)未经授权的错误我的代码是

    string url = "https://myusername:mypassword@mail.google.com/mail/feed/atom";
    XmlReader reader = XmlReader.Create(url);
    SyndicationFeed feed = SyndicationFeed.Load(reader);
    reader.Close();

-->Response.redirect(url); //它正在工作任何人都可以对它有任何想法,或者是框架2.0的AE.Net.Mail.dll的任何版本

谢谢

4

1 回答 1

1

该类XmlReader无法解析来自 URL 的身份验证信息,您必须创建一个XmlSettings实例并将其XmlResolver属性设置为一个XmlUrlResolver实例,该实例的凭据设置为用户名和密码。然后,当您创建XmlReader实例时,您提供自定义XmlSettings实例。以下代码可以解决问题:

// Create a resolver with your credentials
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = new NetworkCredential("myusername", "mypassword");

// Set the reader settings object to use the resolver.
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;

string url = "https://mail.google.com/mail/feed/atom";

// Create the reader using the specified URL and settings
XmlReader reader = XmlReader.Create(url, settings);

SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();

但是,我尝试了此代码并XmlException抛出以下内容: “名称为 'feed' 和命名空间 ' http://purl.org/atom/ns# '的元素不是允许的提要格式。”

Google 输出的提要格式似乎与SyndicationFeed该类不兼容。欲了解更多信息,请参阅:http ://www.eggheadcafe.com/tutorials/csharp/9faa101f-0a1a-465f-a41a-3e52dd9f7526/everything-rss--atom-feed-parser.aspx

于 2013-04-04T07:39:40.627 回答