Using HttpClient in a Xamarin core project

2019-04-06 23:43发布

I am doing a project for multiple platforms where I have followed best practices and created a core project to contain all the code that is the same on all platforms. To do the network communication I would like to use HttpClient which seems to be the recommended approach for communicating with web services going forward.

I am NOT doing a PCL but just a standard C# library to contain the core project. However it seems that there is no common implementation of HttpClient but only platform specific ones. I cannot reference and use it in my core but only in my Android and iOS projects.

I would very much prefer to have all networking code in my core project and as I see it there are two options - neither of which I like.

  1. Make a common interface that I can use in the core project that is implemented as a wrapper on both Android and iOS.
  2. Use another technology that is supported in the core project - I am thinking webclient or the like.

What is the recommended approach and why hasn't Xamarin made HttpClient available as a common library?

Hope someone can help, Thanks

3条回答
爷、活的狠高调
2楼-- · 2019-04-07 00:40

I'm afraid you can't use HttpClient on Mono at the moment due to licensing restrictions. There is a UserVoice suggestion that you can vote on if you like.

查看更多
Evening l夕情丶
3楼-- · 2019-04-07 00:41

You should be able to use System.Net.Http in your core library just fine, I've done it recently.

Make sure your core library is a .Net 4.5 project. There is a setting in project options for selecting the .Net version. After checking this, all you should have to do is reference System.Net.Http.dll.

If that doesn't solve your issue, are you on Windows or Mac(Xamarin Studio)?

查看更多
Emotional °昔
4楼-- · 2019-04-07 00:44

I recommend checking out ModernHttpClient https://github.com/paulcbetts/modernhttpclient

It is a cross-platform networking library for iOS and Android. From the project:

This library brings the latest platform-specific networking libraries to Xamarin applications via a custom HttpClient handler. Write your app using System.Net.Http, but drop this library in and it will go drastically faster.

查看更多
登录 后发表回答