2013-04-04 52 views
4

我想通过RSS获得收件箱,当我使用Response.Redirect我能得到XML,但无法获得作为XML格式,它抛出(401)未经授权的错误我的代码是通过RSS读取Gmail收件箱供稿

string url = "https://myusername:[email protected]/mail/feed/atom"; 
    XmlReader reader = XmlReader.Create(url); 
    SyndicationFeed feed = SyndicationFeed.Load(reader); 
    reader.Close(); 

- > Response.redirect(url); //这是工作 任何一个可以对此有什么想法, 或 是框架AE.Net.Mail.dll的任何VERSON 2.0

感谢您

回答

1

XmlReader类不能从解析认证信息该网址,你必须创建一个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被抛出: “名为‘饲料’和命名空间‘http://purl.org/atom/ns#’是不是允许饲料格式的元素。 “

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

+0

感谢您的帮助,它为我,最后,我忽略了同步和读取直接读取数据.. – 2013-04-04 07:57:57