Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
HttpClient implementations that use platform-native HTTP clients for :rocket:
C#
Pull request Compare This branch is 204 commits behind paulcbetts:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
component
samples
src
vendor
.gitignore
.gitmodules
COPYING
Makefile
ModernHttpClient.nuspec
ModernHttpClient.sln
README.md

README.md

ModernHttpClient

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. This is made possible by two native libraries:

Usage

The good news is, you don't have to know either of these two libraries above, using ModernHttpClient is the most boring thing in the world. Here's how it works:

On iOS:

var httpClient = new HttpClient(new AFNetworkHandler());

On Android:

var httpClient = new HttpClient(new OkHttpNetworkHandler());

How can I use this in a PCL?

Using ModernHttpClient from a PCL is fairly easy with some rigging, especially if you've got some sort of IoC/DI setup - request an HttpClient in your PCL, and register it in your app. However, here's what you can do without any external dependencies:

// In your PCL
public static class HttpClientFactory 
{
    public static Func<HttpClient> Get { get; set; }

    static HttpClientFactory()
    {
        Get = (() => new HttpClient());
    }
}

// Somewhere else in your PCL
var client = HttpClientFactory.Get();

// In your iOS app (i.e. the startup of your app)
public static class AppDelegate
{
    public void FinishedLaunching(UIApplication app, NSDictionary options)
    {
        HttpClientFactory.Get = (() => new HttpClient(new AFNetworkHandler()));
    }
}

How can I use this in MvvmCross?

Check out Michael Ridland's blog post, Implementing ModernHttpClient in MvvmCross, for more information.

Building

make
Something went wrong with that request. Please try again.