我正在尝试使用以下代码为Android应用程序提取简单的RSS源:
public async Task<IList<Episode>> PullEpisodesAsync(int page)
{
string xmlFeed = "";
try
{
using (WebClient wc = new WebClient())
{
var uri = new Uri(Const.FeedEndpoint); // http://spotlightenglish.com/feeds/appfeed/
xmlFeed = await wc.UploadStringTaskAsync(uri, "GET", "");
}
}
catch (System.Net.WebException wex)
{
Console.WriteLine("WebExceptionStatus: {0}", wex.StackTrace);
}
IList<Episode> episodes = ParseFeed(xmlFeed);
return episodes;
}
我得到一个运行时异常,但这并没有给我太多的信息:
WebExceptionStatus:at System.Net.WebClient + c_ async15.MoveNext()
[0x00000] in:0 ---堆栈跟踪结束 抛出异常的先前位置---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
[0x00000] in:0 at
System.Runtime.CompilerServices.TaskAwaiter`1 [System.String] .GetResult ()[0x00000] in:0 at
Spotlight.EpisodePoller + c _async1.MoveNext()
[0x000e2]在 /Users/Jannie/Workshop/SpotlightEnglish/Elements/EpisodePoller.cs:52
[spotlight] Web异常:执行WebClient时发生错误
请求。
我不在代理或防火墙后面,可以通过测试设备浏览Feed网址,并在我的应用清单中指定了Internet访问权限。
非常感谢任何有关如何开始调试的指示。
答案 0 :(得分:2)
以下代码HttpClient
适用于我:
using (var client = new HttpClient())
{
var url = "http://spotlightenglish.com/feeds/appfeed/";
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/xml"));
var msg = await client.GetAsync(url);
if (msg.IsSuccessStatusCode)
{
var xml = await msg.Content.ReadAsStringAsync();
// do whatever with xml from here
}
}
此外,您的代码似乎有点不对劲。为什么正在上传某些内容而不是正在下载?