从Xamarin可移植类库发送Http请求

本文关键字:Http 请求 类库 Xamarin 可移植 | 更新日期: 2023-09-27 17:51:18

我对这个非常简单的任务有相当不错的问题,并寻求帮助。问题是:从Xamarin PCL执行带超时的Http请求的最佳和最可靠的方法是什么?

有几个选项:

  1. 使用旧的HttpWebRequest。这个解决方案应该肯定是工作的,但我有BeginGetRequestStream方法在这个问题中描述的问题:HttpWebRequest BeginGetRequestStream回调从未调用过,它还需要一些额外的丑陋的代码来实现超时。

  2. HttpClient。HttpClient在PCL开箱即用中不可用(我使用MvvmCross库所需的配置文件158)。我试图安装微软HTTP客户端库,但我仍然无法编译PCL项目,错误是:

    名称空间'System '中不存在类型或名称空间'Http'。. Net'(您是否缺少程序集引用?)

  3. portableest NuGet包。同样的问题-似乎不工作在PCL。大量编译错误和警告,例如:

    主引用"System.Net. net . "Http"无法解析,因为它间接依赖于框架程序集"。运行时,版本=1.5.11.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a",无法在当前目标框架中解决。" Version = v4.0 .NETPortable Profile = Profile158"。要解决此问题,要么删除引用"System.Net"。或将应用程序重新定位到包含"System. Http"的框架版本。运行时,版本=1.5.11.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"。(MSB3268) (Prototype.Core)

我做错了什么?为什么我不能使用这些基本的标准库?

最终通过切换到配置文件78()解决了这个问题。NET 4.5)。现在我可以使用HttpClient,这是更好的方式和易于使用。它能可靠地处理我所有的请求。MvvmCross库在配置文件78中也可以很好地工作。

我唯一的问题是缺乏定时器类。也许我应该用task。delay来实现它

从Xamarin可移植类库发送Http请求

我建议通过NuGet使用HttpClient包http://www.nuget.org/packages/Microsoft.Net.Http/

这适用于配置文件78和MvvmCross。您还可以获得async/await支持

关于HttpClient,我已经扩展了配置文件7,所以它现在支持WP7/8, iOS, Android和WinStore,它工作得很好,没有问题,是的,我已经用它完成了几个项目。