7

我正在为多个平台做一个项目,我遵循最佳实践并创建了一个核心项目来包含所有平台上相同的所有代码。为了进行网络通信,我想使用 HttpClient,这似乎是与 Web 服务进行通信的推荐方法。

我不是在做 PCL,而只是一个标准的 C# 库来包含核心项目。但是,似乎没有 HttpClient 的通用实现,而只有特定于平台的实现。我不能在我的核心中引用和使用它,而只能在我的 Android 和 iOS 项目中引用和使用它。

我非常希望在我的核心项目中包含所有网络代码,并且我认为有两个选项 - 我都不喜欢这两个选项。

  1. 制作一个我可以在核心项目中使用的通用接口,该接口在 Android 和 iOS 上都作为包装器实现。
  2. 使用核心项目中支持的另一种技术 - 我正在考虑 webclient 之类的。

推荐的方法是什么?为什么 Xamarin 没有将 HttpClient 作为通用库提供?

希望有人能帮忙,谢谢

4

3 回答 3

7

我建议查看 ModernHttpClient https://github.com/paulcbetts/modernhttpclient

它是一个适用于 iOS 和 Android 的跨平台网络库。从项目:

此库通过自定义 HttpClient 处理程序将最新的特定于平台的网络库引入 Xamarin 应用程序。使用 System.Net.Http 编写您的应用程序,但将这个库放入其中,它会大大加快速度。

于 2013-11-06T00:23:04.223 回答
2

你应该可以System.Net.Http在你的核心库中使用就好了,我最近已经做到了。

确保您的核心库是 .Net 4.5 项目。项目选项中有一个用于选择 .Net 版本的设置。检查完之后,您所要做的就是参考System.Net.Http.dll

如果这不能解决您的问题,您使用的是 Windows 还是 Mac(Xamarin Studio)?

于 2013-11-05T12:50:20.927 回答
1

由于许可限制,恐怕您目前无法在 Mono 上使用 HttpClient。有一个UserVoice 建议,您可以根据需要投票。

于 2013-11-05T14:18:31.510 回答