Generic Web Api Client Request (GET/POST)

Here i am going to explain, how to create generic web api client request,
1. It will helps you to manage all HTTP request from single class.
2. It will helps you to reduce your number of duplicate code as well. (No more repeat code for HTTP client).

Use NuGet Package Manager to install the Web API Client Libraries package.

From the Tools menu, select NuGet Package Manager > Package Manager Console. In the Package Manager Console (PMC), type the following command:

Install-Package Microsoft.AspNet.WebApi.Client

Following is the sample code for Generic HTTP request:

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace ApiRequestSample
{
    public class GenericHttpRequest
    {
        protected static string HeaderName { get { return "AuthenticationToken"; } }
        protected static string HeaderValue { get { return "XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX"; } }

        /// <summary>
        /// Purpose: Http Post Request
        /// </summary>
        /// <typeparam name="T">Resultant Class</typeparam>
        /// <param name="ReqUrl">Reuest Url</param>
        /// <param name="PostData">Post Data</param>
        /// <param name="HeaderType">Header Type: application/x-www-form-urlencoded</param>
        /// <returns></returns>
        public static async Task<T> PostRequest<T>(string ReqUrl, object PostData, string HeaderType = "")
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(ReqUrl);
                client.DefaultRequestHeaders.Add(HeaderName, HeaderValue);
                StringContent strPostData = new StringContent(PostData, Encoding.UTF8, HeaderType);

                HttpResponseMessage response = new HttpResponseMessage();
                response = await client.PostAsync(ReqUrl, strPostData);

                if (response.IsSuccessStatusCode)
                {
                    T result = await response.Content.ReadAsAsync<T>();
                    return result;
                }
                else
                {
                    return default(T);
                }
            }
        }

        /// <summary>
        /// Purpose: Http Get Request
        /// </summary>
        /// <typeparam name="T">Resultant Class</typeparam>
        /// <param name="ReqUrl">Reuest Url with Query String</param>
        /// <param name="HeaderType">Header Type: application/x-www-form-urlencoded</param>
        /// <returns></returns>
        public static async Task<T> GetRequest<T>(string ReqUrl, string HeaderType = "")
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(ReqUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(HeaderType));
                client.DefaultRequestHeaders.Add(HeaderName, HeaderValue);

                HttpResponseMessage response = await client.GetAsync(ReqUrl);
                if (response.IsSuccessStatusCode)
                {
                    T result = await response.Content.ReadAsAsync<T>();
                    return result;
                }
                else
                {
                    return default(T);
                }
            }
        }
    }
}

Comments

Popular posts from this blog

How To Detect Listview Scroll State (Idle/Running) In Xamarin.Forms?

How To Upload And Save Image Or File Using Asp.Net WebApi? – Server Side (Part 1)