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
Post a Comment