HttpClient不适用于Xamarin iOS版本

HttpClient不适用于Xamarin iOS版本,xamarin,xamarin.forms,xamarin.ios,dotnet-httpclient,Xamarin,Xamarin.forms,Xamarin.ios,Dotnet Httpclient,我已经挣扎了一段时间,因为我的iOS Xamarin版本在我尝试使用HttpClient获取或发布HTTP时似乎挂起了。似乎有很多人有很多不同的问题,我在下面分享了我的研究结果和各种可能的解决方案。以下是一些你应该关注的问题: 确保引用了正确的HttpClient 我发现这是最常见的问题。对于使用.net客户端的用户,需要确保在项目中显式引用并包含System.net.Http 在iOS项目设置中选择正确的HttpClient实现 2018年5月左右,SDK和Xamarin平台都推出了新版本,在

我已经挣扎了一段时间,因为我的iOS Xamarin版本在我尝试使用HttpClient获取或发布HTTP时似乎挂起了。似乎有很多人有很多不同的问题,我在下面分享了我的研究结果和各种可能的解决方案。

以下是一些你应该关注的问题:

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

在iOS项目设置中选择正确的HttpClient实现 2018年5月左右,SDK和Xamarin平台都推出了新版本,在项目构建选项中添加了HttpClient实现选项。确保根据文章选择适当的实现

确保您正在使用HTTPS 在上面的文章中,您将看到苹果公司对开发人员施加了很大的压力,要求他们在进行网络连接时使用安全协议。代码中的所有HttpGet和HttpPost方法都需要使用安全协议。我发现到我的http API的连接被阻塞,并一直挂在我的发布版本上,但当我切换到https时,一切都很好。这些连接还需要TLS1.2或更高版本

重要提示:我最初在项目中进行了完整的查找/替换,以将我的http://url更改为https://。问题是,这还会更改XAML设计器文件中引用的模式的URL,从而导致它们无法生成。设计器文件中模式选项中的所有URL都需要保持为使用http生成的URL

检查线程阻塞问题 当使用像GetAsync这样的方法时,当使用Task.Wait或Task.Result时,您可能会发现该方法无限挂起。要防止出现这种情况,请改用以下方法:

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

为什么这是一个答案?这应该是你问题的一部分啊对不起,我以为这是你研究的一部分。尽管如此,我还是觉得写一篇博文或其他什么会更好。正如下面提到的,我认为你的回答受到了不公平的惩罚。然而,您的问题可能需要一些工作,并且有被关闭的风险。与其说不起作用,似乎只是挂起,不如具体说明您遇到了什么问题,最好包含一些代码。用伟大的Alex Trebek的话来说,请以问题的形式陈述。示例代码有助于说明问题,并有助于解决此问题的其他人找到您的好答案。