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;
}
}
}
}