Using HttpClient in a Xamarin core project

13,008

Solution 1

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.

Solution 2

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

Solution 3

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.

Share:
13,008
blackpool
Author by

blackpool

Updated on June 12, 2022

Comments

  • blackpool
    blackpool almost 2 years

    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