我真的很坚持。我从PCL将Xamarin Forms项目升级到.NET Standard,下面的代码不再在Android上运行。我为Android的HttpClient实现和针对本机TLS 1.2+的SSL / TLS实现设置了Android设置。特别是,当我调试时,我尝试使用httpClient.GetStringAsync越过这条线...…它在没有模块的框架中爆炸(在已加载的模块中找不到当前堆栈框架。无法在此位置显示源) 。然后返回给调用者。尝试/捕获不会捕获和错误。我可以在UWP / iOS中顺利执行此代码。我已经坚持了一段时间了。任何想法将不胜感激。我尝试用using语句包装httpclient,并获得相同的结果。我所有的NuGet软件包都是最新的。我在运行Android 8.1.0版而不是模拟器的实际设备上运行到实际服务而不是localhost。 这是我的代码: :
private async Task<List<string>> GetVideoIdsFromPlaylistAsync()
{
var httpClient = new HttpClient();
var videoIds = new List<string>();
try
{
var json = await httpClient.GetStringAsync(apiUrlForPlaylist).ConfigureAwait(false);
JObject response = JsonConvert.DeserializeObject<dynamic>(json);
var items = response.Value<JArray>("items");
foreach (var item in items)
{
videoIds.Add(item.Value<JObject>("contentDetails")?.Value<string>("videoId"));
};
YoutubeItems = await GetVideosDetailsAsync(videoIds);
}
catch (Exception ex)
{
Console.WriteLine(@" Error {0}", ex.Message);
Console.WriteLine(@" Error {0}", ex.InnerException?.Message);
}
return videoIds;
}
答案 0 :(得分:0)
我知道了。代码没有错。我正在看这篇文章https://forums.xamarin.com/discussion/88370/httpclient-getasync-throws-task-was-cancelled-exception,这让我开始思考一些事情。如果让它运行足够长的时间(1至2分钟),则会收到超时错误。我在手机上尝试了用于wifi的热点,而不是家用wifi,它可以正常工作。因此,我重新启动了电缆调制解调器,它可以按预期工作。身材好吗?