HttpClient.GetAsync方法

时间:2017-02-15 11:59:17

标签: c# xamarin.forms dotnet-httpclient

我正在开发一个Xamarin.Forms应用程序,我从服务器下载一些数据并在屏幕上显示它们。每5-10秒下载一次该数据,以保持应用程序的更新。我的数据下载代码如下所示:

public async Task<List<string>> RefreshProgressPageAsync()
    {
        var uri = new Uri(string.Format("http://someurladdress1"));
        List<string> returnValue = new List<string>();
        try
        {
            var response = await client.GetAsync(uri);
            string allResult = string.Empty;
            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsStringAsync();
                string[] valuePartsArray = result.Split(',');
                string id = valuePartsArray[0].Substring(valuePartsArray[0].IndexOf(':') + 1);
                string name = valuePartsArray[1].Substring(valuePartsArray[1].IndexOf(':') + 1);
                string value = valuePartsArray[2].Substring(valuePartsArray[2].IndexOf(':') + 1);
                returnValue.Add(string.Format("{0}|{1}|{2}", id, name, value));
            }

            uri = new Uri(string.Format("http://someurladdress2"));
            response = await client.GetAsync(uri);
            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsStringAsync();
                string[] valuePartsArray = result.Split(',');
                string id = valuePartsArray[0].Substring(valuePartsArray[0].IndexOf(':') + 1);
                string name = valuePartsArray[1].Substring(valuePartsArray[1].IndexOf(':') + 1);
                string value = valuePartsArray[2].Substring(valuePartsArray[2].IndexOf(':') + 1);
                returnValue.Add(string.Format("{0}|{1}|{2}", id, name, value));
            }

            return returnValue;
        }
        catch (Exception ex)
        {
            Debug.WriteLine(@"                  ERROR {0}", ex.Message);
            return new List<string>();
        }
    }

客户端是HttpClient。有两个客户端调用,因为我想在一个RefreshProgressPageAsync调用中下载两组不同的数据。 现在我的问题是当第二次等待client.GetAsync(uri)发生时,我在GetAsynch调用中的某处得到一个null点异常,它没有被try-catch块捕获。我确实有一个解决方法,不解析字符串,而是按原样发送它,但我的问题是什么可能导致这个NullPointException?

0 个答案:

没有答案