【发布时间】:2019-06-23 18:31:15
【问题描述】:
我真的坚持这一点。我将我的 Xamarin Forms 项目从 PCL 升级到 .NET Standard,下面的代码不再适用于 Android。我有 Android 的 HttpClient 实现和原生 TLS 1.2+ 的 SSL/TLS 实现的 Android 设置。特别是,当我在调试时,我尝试使用 httpClient.GetStringAsync 跳过这条线……它在 Frame not in module 中爆炸(在加载的模块中找不到当前堆栈帧。无法显示此位置的源) .然后它返回给调用者。 try/catch 不会捕获和错误。我可以在 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;
}
【问题讨论】:
-
尝试将 HttpClient implementation 更改为 Managed 并将 SSL/TLS implementation 更改为 Native TLS 1.2+
-
@LeoZhu-MSFT 谢谢,但得到了相同的结果。不过,等了一会儿,这次try catch却抓到了一个错误。任务被取消。我开始认为 Android 的 UI 线程中发生了一些阻塞。除了我的原始 ViewModel 之外,我还能够在页面后面的代码中重新创建此错误。接下来我将开始研究。
-
它抛出什么错误?
标签: android xamarin.forms httpclient