如何调试此webclient异常?

时间:2013-10-01 10:13:28

标签: c# debugging xamarin.android webclient

我正在尝试使用以下代码为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访问权限。

非常感谢任何有关如何开始调试的指示。

1 个答案:

答案 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
    }
}

此外,您的代码似乎有点不对劲。为什么正在上传某些内容而不是正在下载