REST requests with Xamarin and RestSharp

RestSharp (available on NuGet) is a clean way to send HTTP requests and handle their response. As a portable package, you can use it in your Xamarin.iOS and Xamarin.Android applications. The following example, POSTs a serialized JSON body, created automatically from a C# class, to an endpoint located at It also sends a token parameter inside the query string:

public class MessageDTO : DTO
    public string Sender { get; set; }
    public string Recipient { get; set; }
    public string Body { get; set; }
public static class PinHelper
    async void SendMessage(MessageDTO dto)
        const string ApiPath = "";
        var client = new RestClient (ApiPath);
        var request = new RestRequest ("messages/message", Method.POST);
        request.AddQueryParameter ("token", Settings.Token);
        request.AddJsonBody (dto);

            var result = await client.ExecuteTaskAsync(request);
            Debug.WriteLine($"Result Status Code: {result.StatusCode} - {result.Content}");
        catch (Exception e) {
            Debug.WriteLine ($"Error: {e.Message}");

On an ASP.NET WebApi controller with EntityFramework, this request can be received and stored using a function that looks like this:

public IHTTPActionResult AddMessage(string token, [FromBody] MessageDTO dto)
    Message message = new Message ();
    dto.Inject (message);
    db.Messages.Add (message);
    db.SaveChanges ();

    return Ok ();