如何通过System.ServiceModel.Syndication使用身份验证来读取私有RSS?
我现在使用的代码只是返回禁止。
我已经尝试添加&PASS=password和&PASSWORD=password到网址,但没有帮助。
try
{
using (XmlReader reader = XmlReader.Create("http://trac:8080/Project/report/7?format=rss&USER=enr"))
{
tracFeed = SyndicationFeed.Load(reader);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}发布于 2010-02-19 00:48:48
@bnkdev你是对的,但有些东西不能工作我不知道为什么,但我猜这似乎是服务器上的问题?
SyndicationFeed tracFeed;
string user = "enr";
string password = "enr";
System.Net.WebClient wc = new System.Net.WebClient();
wc.Credentials = new System.Net.NetworkCredential(user, password);
//this works!
string web = wc.DownloadString("http://trac:8080/project/login/xmlrpc");
//this gives a 403 forbidden !! :-(
System.IO.Stream webClientStream = wc.OpenRead("http://trac:8080/project/report/7?format=rss&USER=enr");
try
{
using (XmlReader reader = XmlReader.Create(webClientStream))
{
tracFeed = SyndicationFeed.Load(reader);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
webClientStream.Close();
}这两个网址在IE中工作,不同的是第一个立即弹出一个登录窗口,但第二个重定向到我可以登录的页面……
所以我确实认为有些地方有点可疑...
发布于 2010-02-19 00:28:44
您是否尝试过为URI创建webrequest,并将凭据传递给WebRequest。然后,您可以简单地从请求的响应流创建一个XmlReader,并通过SyndicationFeed.Load加载该阅读器,afaik加载本身不提供传递凭据的直接方式,您将需要发出web请求并将基本凭据附加到您所请求的URI。此article正在尝试执行与您的问题类似的操作。
https://stackoverflow.com/questions/2290065
复制相似问题