HttpClient在Xamarin iOS版本上不起作用

时间:2018-07-17 08:34:06

标签: xamarin xamarin.forms xamarin.ios dotnet-httpclient

我已经挣扎了一段时间,因为当我尝试使用HttpClient进行HTTP Get或Post时,我的iOS Xamarin Release版本似乎挂起了。似乎有很多人遇到很多不同的问题,我在下面分享了我的研究结果以及各种可能的解决方案。

1 个答案:

答案 0 :(得分:-2)

您应该注意以下几点:

  1. 确保引用了正确的HttpClient

我发现这是最常见的问题。对于使用.net客户端的用户,您需要确保明确引用了System.Net.Http并将其包含在项目中。

  1. 在iOS项目设置中选择正确的HttpClient实现

2018年5月左右,引入了SDK和Xamarin平台的新版本,这些新版本在Project Build Options中添加了HttpClient实现选项。请确保根据this文章选择适当的实现。

  1. 确保您正在使用HTTPS

在上面的文章中,您将看到Apple施加很大压力,要求开发人员在进行网络连接时使用安全协议。您代码中的所有HttpGet和HttpPost方法都需要使用安全协议。我发现与我的http API的连接被阻止,并继续挂在我的发行版本上,但是当我切换到https时,一切工作正常。这些连接也需要TLS1.2或更高版本。

重要:我最初在项目中进行了完整查找/替换,将http:// URL更改为https://。问题在于,这还将更改XAML设计器文件中引用的架构的URL(这将导致它们无法生成)。设计器文件中架构选项中的所有URL必须保持生成状态(使用http)。

  1. 检查线程阻塞问题

在使用诸如GetAsync之类的方法时,使用Task.Wait或Task.Result时,您可能会发现该方法无限期地挂起。为防止这种情况,请改用此方法:

await client.GetAsync(uri).ConfigureAwait(false)