Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using HttpClient in a Xamarin core project

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

like image 927
blackpool Avatar asked Nov 05 '13 08:11

blackpool


3 Answers

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.

like image 105
Brett Duncavage Avatar answered Sep 27 '22 18:09

Brett Duncavage


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)?

like image 25
jonathanpeppers Avatar answered Sep 27 '22 16:09

jonathanpeppers


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.

like image 35
Darrel Miller Avatar answered Sep 27 '22 18:09

Darrel Miller