Popular Posts

Monday, October 24, 2016

HttpClient - consuming the Web Api Service in .net

Here is an example of consuming Web Api in .Net client using pure HttpClient:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace WebApiClient
{
    class Program
    {

        private static void Main(string[] args)
        {
            MainAsync().Wait();

            Console.ReadLine();
        }
     
        static async Task MainAsync()
        {
            await ReadValues();
            await AddValue();
            await ReadValue(1);
            await DeleteValue(2);

            await DeleteValue(111); // Delete with Error

            Console.ReadLine();
        }

        private async static Task DeleteValue(int id)
        {
            var url = "http://localhost:13628/api/Values/" + id;
            using (var client = new HttpClient())
            {
                var response = await client.DeleteAsync(url);
                if (response.IsSuccessStatusCode)
                {
                    await ReadValues();
                }
                else
                {
                    Console.WriteLine(response.ReasonPhrase);
                    Console.WriteLine(response.StatusCode);
                }
            }
        }

        private async static Task ReadValue(int id)
        {
            var url = "http://localhost:13628/api/Values/" + id;

            using (var client = new HttpClient())
            {
                var httpResponseMessage = await client.GetAsync(url);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    var jsonString = httpResponseMessage.Content.ReadAsStringAsync().Result;
                    var result = JsonConvert.DeserializeObject<ObjectToStore>(jsonString);
                    Console.WriteLine("Getting one value->" + result.Value);
                }
                else
                {
                    Console.WriteLine(httpResponseMessage.StatusCode);
                    Console.WriteLine(httpResponseMessage.ReasonPhrase);
                }
            }
        }

        private async static Task AddValue()
        {
            var url = "http://localhost:13628/api/Values/";
            using (var client = new HttpClient())
            {
                var value = new ObjectToStore() {Id = 3, Value = "value 3"};
                var content = JsonConvert.SerializeObject(value);
                var stringContent = new StringContent(content, Encoding.Default, "application/json"); // Note: need to include media type
                var result = await client.PostAsync(url, stringContent);

                if (result.IsSuccessStatusCode)
                {
                    await ReadValues();
                }
                else
                {
                    Console.WriteLine(result.StatusCode);
                    Console.WriteLine(result.ReasonPhrase);
                }
            }
        }

        private static async Task ReadValues()
        {
            var url = "http://localhost:13628/api/Values";
            var client = new HttpClient();
            var response = await client.GetAsync(url);
            if (response.IsSuccessStatusCode)
            {
                var jsonString = response.Content.ReadAsStringAsync().Result;
                var values = JsonConvert.DeserializeObject<List<ObjectToStore>>(jsonString);

                foreach (ObjectToStore value in values)
                {
                    Console.WriteLine(value.Value);
                }
            }
        }
    }

    public class ObjectToStore
    {
        public int Id { get; set; }
        public string Value { get; set; }
    }
}

No comments:

Post a Comment