无法加载在浏览器中正常加载的C#rss feed(400错误)
我试图使用'XMLTextReader'从RSS feed中提取数据。虽然它加载在Web浏览器完全正常,我得到一个400错误(“远程服务器返回错误:(400)错误的请求”)当我用我的代码:无法加载在浏览器中正常加载的C#rss feed(400错误)
XmlTextReader reader = new XmlTextReader(url);
while (reader.Read())
{ //Do something }
我也试过'WebClient'无济于事。
任何人都可以启发我为什么它在浏览器中工作,但不是与我的代码请吗?
P.S - 它正常工作与数据类似的格式一样this
Can anybody enlighten me as to why it works in a browser but not with my code please?
也许远程网站希望您设置的UserAgent。例如:
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17";
using (var stream = client.OpenRead(url))
using (var reader = XmlReader.Create(stream))
{
while (reader.Read())
{
// ...
}
}
}
或者网站可能要求您进行身份验证才能调用此资源?在这种情况下,您需要随请求一起发送身份验证Cookie。如果您不确定,请联系网站管理员以获取有关如何使用API的更多信息。
哦,顺便说一下,您为.NET框架内置的SyndicationFeed
类完全是为了这个目的。使用XmlReader
解析RSS似乎相当费力。
谢谢你的帮助!原来是UserAgent的一部分。这是一项急需的工作,当我有时间学习时,它将升级为SyndicationFeed。 – user1567095 2013-02-18 15:46:05
可能用WebClient下载它,并以这种方式将它提供给XmlTextReader?
var url = "http://marketplaceedgeservice.windowsphone.com/v8/catalog/apps/4aef0ee8-2378-e011-986b-78e7d1fa76f8?os=8.0.9903.0&cc=GB&oc=&lang=en-GB&hw=520170499&dm=RM-821_eu_euro1_111&oemId=NOKIA&moId=vod-gb&cf=99-1";
var data = "";
using (var wc = new WebClient())
{
wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");
data = wc.DownloadString(url);
}
var reader = new XmlTextReader(new System.IO.StringReader(data));
while (reader.Read())
{
//
}
谢谢你的帮助! – user1567095 2013-02-18 15:44:57
你得到了什么确切的错误? – 2013-02-18 14:56:26
远程服务器返回错误:(400)错误的请求。 – user1567095 2013-02-18 15:14:02