无论出于何种原因,IBM都使用https(不需要凭据)来获取RSS源.我正在尝试使用.NET 4 SyndicationFeed 来使用https://www.ibm.com/developerworks/mydeveloperworks/blogs/roller-ui/rendering/feed/gradybooch/entries/rss?lang=en.我可以在浏览器中打开这个Feed,它加载得很好.这是代码:
using (XmlReader xml = XmlReader.Create("https://www.ibm.com/developerworks/mydeveloperworks/blogs/roller-ui/rendering/feed/gradybooch/entries/rss?lang=en"))
{
var items = from item in SyndicationFeed.Load(xml).Items
select item;
}
Run Code Online (Sandbox Code Playgroud)
这是例外:
System.Net.WebException was unhandled by user code
Message=The remote server returned an error: (500) Internal Server Error.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext) …Run Code Online (Sandbox Code Playgroud) 我有编码问题.当我得到网站的源代码时,我有:

我将编码设置为UTF8,如下所示:
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string sourceCode = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!