1

我正在尝试使用以下代码为 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:在
System.Net.WebClient+ c_async15.MoveNext ()
[0x00000] in :0 --- 从先前抛出异常的位置结束堆栈跟踪---在
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
[0x00000] 在:0 在
System.Runtime.CompilerServices.TaskAwaiter`1[System.String].GetResult () [0x00000] 在:0 在
Spotlight.EpisodePoller+c
_async1.MoveNext ()
[0x000e2] 在
/Users/Jannie /Workshop/SpotlightEnglish/Elements/EpisodePoller.cs:52 [spotlight] Web 异常:执行 WebClient 请求
时发生错误。

我不在代理或防火墙后面,可以通过测试设备浏览提要 URL,并在我的应用清单中指定 Internet 访问。

任何有关如何开始调试的指针将不胜感激。

4

1 回答 1

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

此外,您的代码似乎有点错误。你为什么要上传东西到服务器而不是下载

于 2013-10-01T10:35:46.457 回答