在Android上,Xamarin Forms PCL HttpClient引发未处理的异常

5

我在Xamarin.Forms PCL中直接使用System.Net.Http.HttpClient。虽然它在Windows Phone上运行得非常好,但在Android上在GetAsync行抛出了未处理的异常。

我是否遗漏了某些平台特定的东西?

var client = new HttpClient();
var response = await client.GetAsync(Constants.ProjectsUri); // this breaks

4
实际的异常是什么? - Jason
1
小心!!!Android 5有很多漏洞,如果你正在使用棒棒糖设备进行测试,请尝试以发布版本而非调试运行。 - Gusman
不要使用 await try .Result,这会改变我的代码行为。 - Mario Galván
4
不要听从@MarioGalván的建议。千万不要调用“.Result”,否则你将引入死锁,这是你不想看到的。看看ModernHttpClient是否能帮助你解决问题。如果您提供完整的异常信息,它会很有帮助。 - Cheesebaron
我有同样的问题,当与服务器连接受限(例如超时、飞行模式)时会出现这种情况。在 Xamarin Insights 中也存在一个相关问题(如果您使用它,请更新),因为 Mono 中存在一个错误。您找到了其他解决方案吗? - glautrou
1个回答

1

使用本地 Android 客户端处理程序

在 Android 构建设置中,将 HttpClient 实现 设置为使用 AndroidClientHandler

Xamarin 文档的链接

AndroidClientHandler 类在 Xamarin.Android 6.1 中引入,为 Xamarin.Android 应用程序提供 TLS 1.2 支持。该类使用本地的 java.net.URLConnection 进行所有 HTTP 连接,允许 HttpClient 实例使用 Android 可用的任何网络和加密协议。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接