How to Call RESTfull API Service

Http Method of API Call 


------------------------------------------------------------------------------------

public class HttpCommonService : IHttpCommonService
    {
        private HttpClient _client;
        private HttpResponseMessage response;
        private string result;

        public HttpCommonService()
        {
        }

        public async Task<T> GetAsync<T>(string url)
        {

            var uri = new Uri(string.Format(url));
            _client = CreateWebRequest(uri);
            var message = new HttpRequestMessage(HttpMethod.Get, uri);
            response = _client.SendAsync(message).Result;
            result = await response.Content.ReadAsStringAsync();
            var responseResult = JsonConvert.DeserializeObject<T>(result);
            return responseResult;

        }

        public async Task<T1> PostAsync<T1, T2>(string url, T2 model)
        {
            try
            {
                bool isNetworkAvailable = CrossConnectivity.Current.IsConnected;
                bool isHostReachable = await CrossConnectivity.Current.IsRemoteReachable(APIData.HOST_REACHABLE);
                if (isNetworkAvailable)
                {
                    if (isHostReachable)
                    {
                        var uri = new Uri(string.Format(url));
                        _client = CreateWebRequest(uri);
                        var json = JsonConvert.SerializeObject(model);
                        var content = new StringContent(json, Encoding.UTF8, "application/json");
                        response = await _client.PostAsync(uri, content);
                        result = await response.Content.ReadAsStringAsync();
                        response.EnsureSuccessStatusCode();
                        var responseresult = JsonConvert.DeserializeObject<T1>(result);
                        return responseresult;
                    }
                    else
                    {
                        UserDialogs.Instance.HideLoading();
                        UserDialogs.Instance.Toast("Internet Connection is Slow");
                        //await Xamarin.Forms.Application.Current.MainPage.DisplayAlert("Host Not Reachable", "Not able to reach server. Please Check Internet Connection", "OK");
                        System.Diagnostics.Debug.WriteLine("Not able to reach server. Please Check Internet Connection");
                        // Host is not reachable
                        return default(T1);
                    }
                }
                else
                {
                    UserDialogs.Instance.HideLoading();
                    UserDialogs.Instance.Toast(MessageStringConstants.CheckInternetConnection);
                    return default(T1);
                }
            }
            catch (Exception ex)
            {
                UserDialogs.Instance.HideLoading();
                UserDialogs.Instance.Toast(ex.Message.ToString());
                return default(T1);
            }
        }


        private HttpClient CreateWebRequest(Uri serviceUrl)
        {
            var handler = new HttpClientHandler() { UseCookies = false };
            _client = new HttpClient(handler) { BaseAddress = serviceUrl };
            if (Application.Current.Properties.ContainsKey("token"))
            {
                _client.DefaultRequestHeaders.Add("Accept", "application/json");
                _client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Application.Current.Properties["token"].ToString());
            }
            _client.Timeout = new TimeSpan(0, 0, 15);
            return _client;
        }
    }
-------------------------------------------------------------------------------------------



    public interface IHttpCommonService
    {
        Task<T> GetAsync<T>(string url);

        Task<T1> PostAsync<T1, T2>(string url, T2 model);

    }


------------------------------------------------------------------------------------------------


Usage
-------------

try
                        {
                            bool isNetworkAvailable = CrossConnectivity.Current.IsConnected;
                            if (isNetworkAvailable)
                            {
                                var requestData = new FeedbackRequestData();
                       

                                var feedbackResponse = await _commonservice.PostAsync<FeedbacksResponseData, FeedbackRequestData>(APIData.PHP_REST_API_BASE_URL + APIMethods.FeedBack, requestData);
                                if (feedbackResponse != null)
                                {
                                    if (feedbackResponse.Code == "200")
                                    {
                                        await UserDialogs.Instance.AlertAsync(feedbackResponse.Message, "", "OK");
                                        FeedBackSubject = string.Empty;
                                        FeedBackContent = string.Empty;
                                    }
                                }
                            }
                            else
                            {
                                await UserDialogs.Instance.AlertAsync("Please Check Internet service", "", "ok");
                            }
                        }
                        catch (Exception ex)
                        {
                            await UserDialogs.Instance.AlertAsync("Your feedback was not submitted.Please try again.", "", "OK");
                            System.Diagnostics.Debug.WriteLine(ex.Message);
                        }


--------------------------------------------------
initialize in Main Contructor



   private HttpCommonService _commonservice { get; set; }
        public FeedbackRequestData FeedbackRequestData { get; set; }














Comments

Popular posts from this blog

Listview SelectedItem in MVVM

Button click event with current object from listview having button

SideMenu React native