我正在开发一个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?