🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / Generic HttpClient GET and POST requests Generik Class Model T

1-) C# RMOS - Generic HttpClient GET and POST requests Generik Class Model T

 

 

kaynak : https://techyian.github.io/2018-06-29-generic-httpclient/

 

 

GET METODU V1:

 

 public T getRequestS<T>(string link, string token="")

        {

            string result = "";

            try

            {

                HttpClient client = new HttpClient();

             client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

                if (token != "") client.DefaultRequestHeaders.Add("token", token);

                HttpResponseMessage response = client.GetAsync(link).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                 result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

  // result = System.Net.WebUtility.HtmlDecode(result);

 

                if (result != "" && result.Substring(0, 1).Equals("[")) //listtir

                {

                    List<GetirGenelError> errorList = JsonConvert.DeserializeObject<List<GetirGenelError>>(result);

                    if (errorList != null && errorList.Count != 0 && errorList[0].code != 0) // 0 ise hata yok demek

                    {

         MessageBox.Show("Error code = " + errorList[0].code + "\nError message = " + errorList[0].message);

                    }

                }

                else // list değildir -> result = result.Substring(1, result.Length - 2);

                {

                    GetirGenelError error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                    if (error != null && error.code != 0) // 0 ise hata yok demek

                    {

                        MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                    }

                }

 

                T outs = JsonConvert.DeserializeObject<T>(result);

                

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                return JsonConvert.DeserializeObject<T>(result);

            }

        }

 

GET METODUNUN KULLANIMI :

 

GetirResponseChangeLog.Root loginResponse = getirApi.getRequestS<GetirResponseChangeLog.Root>(GetirStatik.requestChangeLogLink);

 

POST METODU V1:

 

 public TOut postRequestS<TIn, TOut>(string link, TIn model)

        {

            string result = "";

            try

            {

                var json = JsonConvert.SerializeObject(model);

                var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

                HttpClient client = new HttpClient();

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

                HttpResponseMessage response = client.PostAsync(link, stringContent).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

 

                if (result != "" && result.Substring(0, 1).Equals("[")) //listtir

                {

             List<GetirGenelError> errorList = JsonConvert.DeserializeObject<List<GetirGenelError>>(result);

              if (errorList != null && errorList.Count != 0 && errorList[0].code != 0) // 0 ise hata yok demek

                    {

          MessageBox.Show("Error code = " + errorList[0].code + "\nError message = " + errorList[0].message);

                    }

                }

                else // list değildir -> result = result.Substring(1, result.Length - 2);

                {

                    GetirGenelError error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                    if (error != null && error.code != 0) // 0 ise hata yok demek

                    {

                        MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                    }

                }

 

                TOut outs = JsonConvert.DeserializeObject<TOut>(result);

              

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                TOut outs = JsonConvert.DeserializeObject<TOut>(result); // result boş olursa nesne null doner

                return outs;

            }

        }

 

DİĞER  :

 

  public string requestPostDict(string url, Dictionary<string, string> dict)

        {

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data"));

            var Content = new FormUrlEncodedContent(dict);

            HttpResponseMessage responseOtel = client.PostAsync(url, Content).Result;

            string result = responseOtel.Content.ReadAsStringAsync().Result;

            return result;

        }

 

        public string requestGet(string url)

        {

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("multipart/form-data"));

            HttpResponseMessage responseOtel = client.GetAsync(url).Result;

            string result = responseOtel.Content.ReadAsStringAsync().Result;

            //result = System.Net.WebUtility.HtmlDecode(result);

            return result;

        }

 

POST METODU V2:

 

 public T postRequestS<T>(string link, string token="")

        {

            string result = "";

            try

            {

                HttpClient client = new HttpClient();

              client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

                if (token != "") client.DefaultRequestHeaders.Add("token", token);

                var stringContent = new StringContent("{}", Encoding.UTF8, "application/json");

                HttpResponseMessage response = client.PostAsync(link, stringContent).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                 result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

                if (result!="" && result.Substring(0,1).Equals("[")) //listtir

                {

             List<GetirGenelError> errorList = JsonConvert.DeserializeObject<List<GetirGenelError>>(result);

               if (errorList != null && errorList.Count!=0 && errorList[0].code != 0) // 0 ise hata yok demek

                    {

       MessageBox.Show("Error code = " + errorList[0].code + "\nError message = " + errorList[0].message);

                    }

                }

                else // list değildir -> result = result.Substring(1, result.Length - 2);

                {

                    GetirGenelError error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                    if (error != null && error.code != 0) // 0 ise hata yok demek

                    {

                        MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                    }

                }

 

                T outs = JsonConvert.DeserializeObject<T>(result);

                

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                return JsonConvert.DeserializeObject<T>(result);

            }

        }

 

POST KULLANIMI :

 

LoginSchema login = new LoginSchema();

login.AppSecretKey = "KEY";

login.RestaurantSecretKey = "SECRETKEY";

LoginResponseSchema loginResponse = getirApi.postRequestS<LoginSchema,LoginResponseSchema>(GetirStatik.requestLoginLink, login);

 

 

 

FARKLI BİR KONU AMA AKLINDA OLSUN : EĞER LİNQ İLE DEĞİLDE NORMAL TSQL QUERY İLE SORGU YAZARSAN VE O SORGUYU GENERİK GİBİ TİPİNİ BELLİ EDERSEN FİELDNAME(COLUMNNAME) LAR NESNE.PROPERTY(NESNE.COLUMNNAME) OLARAK YAKALAYABİLİRSİN

 

 

 

GETİR APİ İÇİN YAZDIĞIM CLİENT C#

 

using Newtonsoft.Json;

using System;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System.Text;

using System.Windows.Forms;

 

namespace GetirYemek_R.GetirYemek

{

    public class GetirApi

    {

        public GetirApi()

        {

            ServicePointManager.Expect100Continue = true;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        }

        public T getRequestS<T>(string link, string token)

        {

            try

            {

                HttpClient client = new HttpClient();

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

 

                client.DefaultRequestHeaders.Add("token", token);

 

                HttpResponseMessage response = client.GetAsync(link).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                var result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

 

                GetirGenelError error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                T outs = JsonConvert.DeserializeObject<T>(result);

                if (error != null && error.code != 0) // 0 ise hata yok demek

                {

                    MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                }

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                return JsonConvert.DeserializeObject<T>("HATA !" + ex.Message);

            }

        }

 

        public T postRequestS<T>(string link, string token)

        {

            try

            {

                HttpClient client = new HttpClient();

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

                client.DefaultRequestHeaders.Add("token", token);

 

                var stringContent = new StringContent("{}", Encoding.UTF8, "application/json");

 

                HttpResponseMessage response = client.PostAsync(link, stringContent).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                var result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

                GetirGenelError error;

                try

                {

                    error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                }

                catch (Exception ex)

                {

                    result = result.Substring(1, result.Length - 2);

                    error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                }

 

                T outs = JsonConvert.DeserializeObject<T>(result);

                if (error!=null && error.code != 0) // 0 ise hata yok demek

                {

                    MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                }

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                return JsonConvert.DeserializeObject<T>("HATA !" + ex.Message);

            }

        }

        public TOut postRequestS<TIn, TOut>(string link, TIn model)

        {

            string result = "";

            try

            {

                var json = JsonConvert.SerializeObject(model);

                var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

                HttpClient client = new HttpClient();

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("aplication/json"));

                HttpResponseMessage response = client.PostAsync(link, stringContent).Result;

                var byteArray = response.Content.ReadAsByteArrayAsync().Result;

                result = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

 

                GetirGenelError error;

                try

                {

                    error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                }

                catch (Exception ex)

                {

                    result = result.Substring(1, result.Length - 2);

                    error = JsonConvert.DeserializeObject<GetirGenelError>(result);

                }

 

                TOut outs = JsonConvert.DeserializeObject<TOut>(result);

                if (error != null && error.code != 0) // 0 ise hata yok demek

                {

                    MessageBox.Show("Error code = " + error.code + "\nError message = " + error.message);

                }

                return outs;

            }

            catch (Exception ex)

            {

                MessageBox.Show("Bir Hata Oldu " + ex.Message);

                TOut outs = JsonConvert.DeserializeObject<TOut>(result); // result boş olursa nesne null doner

                return outs;

            }

        }

 

        public GetirLoginResponse getLoginRespose(GetirLoginRequest getirLoginRequest)

        {

            try

            {

                GetirLoginResponse response = postRequestS<GetirLoginRequest, GetirLoginResponse>(GetirStatik.requestLoginLink, getirLoginRequest);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

 

 

        public GetirMenuResponse getMenuRespose(string token)

        {

            try

            {

                GetirMenuResponse response = getRequestS<GetirMenuResponse>(GetirStatik.requestMenuLink, token);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

 

        public GetirOrderResponse.Root getOrderRespose(string token)

        {

            try

            {

                GetirOrderResponse.Root response = postRequestS<GetirOrderResponse.Root>(GetirStatik.requestOrderLink, token);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

 

        public GetirOnay getOrderVerify(string token, string foodOrderId) // onay

        {

            try

            {

                GetirOnay response = postRequestS<GetirOnay>(GetirStatik.requestOrderBaseLink + "/" + foodOrderId + "/verify", token);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

 

        public GetirOnay getOrderPrepare(string token, string foodOrderId) // onay

        {

            try

            {

                GetirOnay response = postRequestS<GetirOnay>(GetirStatik.requestOrderBaseLink + "/" + foodOrderId + "/prepare", token);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

 

        public GetirOnay getOrderDeliver(string token, string foodOrderId) // onay

        {

            try

            {

                GetirOnay response = postRequestS<GetirOnay>(GetirStatik.requestOrderBaseLink + "/" + foodOrderId + "/deliver", token);

                return response;

            }

            catch (Exception ex)

            {

                MessageBox.Show("HATA ! " + ex.Message);

                return null;

            }

        }

    }

}

 

 2021 Mart 19 Cuma
 1,229