【问题标题】:XDocument.Load(feedUrl) returns "Data at the root level is invalid. Line 1, position 1."XDocument.Load(feedUrl) 返回“根级别的数据无效。第 1 行,位置 1。”
【发布时间】:2014-11-06 08:22:16
【问题描述】:
【问题讨论】:
标签:
.net
xml
rss
httpwebrequest
linq-to-xml
【解决方案1】:
...我认为这可能不是格式问题,并且相关网站可能会将请求视为机器人并提供替代响应。
事实上,情况就是这样!我尝试使用 HttpWebRequest (没有设置用户代理)获取提要,但我只收到了 @ 。我尝试了 with 一个用户代理,我得到了我想要的 XML。那时只是使用XDocument.Parse()
XDocument doc;
try
{
doc = XDocument.Load(feedUrl);
}
catch (XmlException x)
{
string xml = Utilities.WebGetRequest(feedUrl);
doc = XDocument.Parse(xml);
}
//carry on working with the doc
...
public static string WebGetRequest(string url)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
Stream objStream;
HttpWebResponse response;
string retVal;
StreamReader objReader;
try
{
response = request.GetResponse() as HttpWebResponse;
}
catch (WebException ex)
{
response = ex.Response as HttpWebResponse;
}
objStream = response.GetResponseStream();
objReader = new StreamReader(objStream);
retVal = objReader.ReadToEnd();
objReader.Dispose();
objStream.Dispose();
response.Dispose();
return retVal;
}
catch (Exception ex)
{
//Log("FeedRequest", url, true, ex); //log it, display it and move on
return "";
}
}